Question

Et pourquoi devrais-je utiliser l’un plutôt que l’autre dans mon code ?

Était-ce utile?

La solution

Prudence:Cette réponse semble obsolète. Il a été publié avant que .NET 4 ne soit disponible, ce qui a apparemment introduit quelques optimisations concernant Type et a ainsi rendu les informations contenues dans cette réponse obsolètes.Voir cette réponse plus récente pour plus de détails.

Selon ce billet de blog (de 2006) de Vance Morrison, RuntimeTypeHandle est un type valeur (struct) qui encapsule un pointeur non géré, donc Type.GetTypeHandle(obj).Equals(anotherHandle) est plus rapide à utiliser pour des comparaisons strictes "est exactement du même type" que obj.GetType().Equals(anotherType) — ce dernier crée System.Type cas qui sont, apparemment, plus lourds.

Cependant, c'est également moins évident et relève définitivement de la catégorie "micro-optimisation", donc si vous vous demandez quand vous avez besoin de l'un plutôt que de l'autre, vous devriez probablement simplement utiliser System.Type.

Autres conseils

Dans .NET 4.0 bêta 1 RuntimeTypeHandle vient juste d'envelopper RuntimeType.Il semble que tous les avantages de l'utiliser comme produit bon marché Type le proxy est parti.

Preuve de l'affirmation ci-dessus :

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top