Pregunta

¿Y por qué debería usar uno sobre el otro en mi código?

¿Fue útil?

Solución

Precaución:Esta respuesta parece estar desactualizada. Se publicó antes de que .NET 4 estuviera disponible, lo que aparentemente introdujo algunas optimizaciones con respecto a Type y por lo tanto dejó obsoleta la información de esta respuesta.Ver esta respuesta más reciente para detalles.

De acuerdo a esta publicación de blog (de 2006) de Vance Morrison, RuntimeTypeHandle es un tipo de valor (struct) que envuelve un puntero no administrado, por lo que Type.GetTypeHandle(obj).Equals(anotherHandle) es más rápido de usar para comparaciones estrictas de "es exactamente el mismo tipo" que obj.GetType().Equals(anotherType) — este último crea System.Type casos que, aparentemente, son más pesados.

Sin embargo, también es menos obvio y definitivamente se incluye en la categoría "microoptimización", por lo que si se pregunta cuándo necesita una u otra, probablemente debería usar System.Type.

Otros consejos

En .NET 4.0 Beta 1 RuntimeTypeHandle solo envuelve RuntimeType.Parece que todos los beneficios de usarlo como barato Type el proxy se ha ido.

Evidencia de la afirmación anterior:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top