A comunidade C # usou de maneira tão onipresente o prefixo "I" para denotar uma interface que até os programadores mais inexperientes sabem usá-lo.
Por que é que não prefixamos enumerações, classes abstratas ou estruturas (possivelmente com "E", "A" e "S" respectivamente)?
Por exemplo, se marcássemos todas as classes abstratas com um "A", forneceria informações valiosas sobre esse tipo que, embora possa ser inferido, não é imediatamente óbvio.
Observe que não estou advogando por essa mudança; estou apenas tentando entender por que não fazemos as coisas dessa maneira.
Este tópico responde por que usamos o prefixo "I", mas não responde por que não usamos outros prefixos.