Domanda

E perché dovrei usarne uno sopra l'altro nel mio codice?

È stato utile?

Soluzione

Attenzione:Questa risposta sembra non essere aggiornata. È stato pubblicato prima che diventasse disponibile .NET 4, che apparentemente ha introdotto alcune ottimizzazioni in merito Type e quindi ha reso obsolete le informazioni contenute in questa risposta.Vedere questa risposta più recente per dettagli.

Secondo questo post sul blog (del 2006) di Vance Morrison, RuntimeTypeHandle è un tipo di valore (struct) che avvolge un puntatore non gestito, quindi Type.GetTypeHandle(obj).Equals(anotherHandle) è più veloce da utilizzare per confronti rigorosi "è esattamente dello stesso tipo" rispetto a obj.GetType().Equals(anotherType) - quest'ultimo crea System.Type istanze apparentemente più pesanti.

Tuttavia, è anche meno ovvio e rientra sicuramente nella categoria "micro-ottimizzazione", quindi se ti stai chiedendo quando è necessario l'uno rispetto all'altro, probabilmente dovresti semplicemente utilizzare System.Type.

Altri suggerimenti

In .NET 4.0 Beta 1 RuntimeTypeHandle semplicemente avvolge RuntimeType.Sembra che tutti i vantaggi derivanti dall'usarlo a buon mercato Type i delegati sono andati.

Prova dell'affermazione di cui sopra:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top