Tengo un programa que requiere un rendimiento rápido. Dentro de uno de sus bucles internos, necesito probar el tipo de un objeto para ver si hereda de una determinada interfaz.
Una forma de hacerlo sería con la función de verificación de tipo incorporada de CLR. El método más elegante probablemente sea la palabra clave 'es':
if (obj is ISpecialType)
Otro enfoque sería darle a la clase base mi propia función virtual GetType () que devuelve un valor de enumeración predefinido (en mi caso, en realidad, solo necesito un bool). Ese método sería rápido, pero menos elegante.
Escuché que hay una instrucción IL específicamente para la palabra clave 'es', pero eso no significa que se ejecute rápidamente cuando se traduzca al ensamblado nativo. ¿Alguien puede compartir alguna idea sobre el rendimiento de 'is' versus el otro método?
ACTUALIZACIÓN: ¡ Gracias por todas las respuestas informadas! Parece que hay un par de puntos útiles repartidos entre las respuestas: el punto de Andrew acerca de 'es' realizar un yeso automáticamente es esencial, pero los datos de rendimiento recopilados por Binary Worrier e Ian también son extremadamente útiles. Sería fantástico si se editara una de las respuestas para incluir toda esta información.