Tenho um programa que exige desempenho rápido. Em um de seus loops internos, preciso testar o tipo de um objeto para ver se ele herda de uma determinada interface.
Uma maneira de fazer isso seria com a funcionalidade de verificação de tipo integrada do CLR. O método mais elegante provavelmente sendo a palavra-chave 'é':
if (obj is ISpecialType)
Outra abordagem seria dar à classe base minha própria função virtual GetType () que retorna um valor de enum predefinido (no meu caso, na verdade, eu só preciso de um bool). Esse método seria rápido, mas menos elegante.
Ouvi dizer que existe uma instrução IL especificamente para a palavra-chave 'é', mas isso não significa que ela executa rapidamente quando traduzida para o assembly nativo. Alguém pode compartilhar alguns insights sobre o desempenho de 'é' em relação ao outro método?
ATUALIZAÇÃO: Obrigado por todas as respostas informadas! Parece que alguns pontos úteis estão espalhados entre as respostas: O ponto de Andrew sobre 'é' executar um elenco automaticamente é essencial, mas os dados de desempenho coletados por Binary Worrier e Ian também são extremamente úteis. Seria ótimo se uma das respostas fosse editada para incluir todas essas informações.