Pergunta

E por que eu iria usar um sobre o outro no meu código?

Foi útil?

Solução

Atenção:Esta resposta parece estar fora de data. Ele foi postado antes .NET 4 tornou-se disponível, o que, aparentemente, introduziu algumas otimizações em relação Type e assim tornou a informação neste resposta obsoletos.Ver este mais recente resposta para obter detalhes.

De acordo com a este post do blog (a partir de 2006) por Vance Morrison, RuntimeTypeHandle é um tipo de valor (struct) que envolve um ponteiro não gerenciado, de forma Type.GetTypeHandle(obj).Equals(anotherHandle) é mais rápido usar estrita "é exatamente o mesmo tipo de" comparações de obj.GetType().Equals(anotherType) — o último cria System.Type instâncias que são, aparentemente, mais pesado.

No entanto, também é menos óbvia, e, definitivamente, cai sob a categoria de "micro-otimização" então, se você está se perguntando quando você precisar de um sobre o outro, provavelmente, você deve apenas usar o Sistema.Escreva.

Outras dicas

Em .NET 4.0 Beta 1 RuntimeTypeHandle apenas encapsula RuntimeType.Parece que todos os benefícios de usá-la como uma barata Type proxy ter ido.

Evidência para a reivindicação acima:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top