Ante este escenarioCómo comprobar que implementa objeto de interfaz
interface A {}
class B : A {}
A b = new B();
¿Cómo puedo comprobar que se crea desde la interfaz A que el objeto B?
Ante este escenarioCómo comprobar que implementa objeto de interfaz
interface A {}
class B : A {}
A b = new B();
¿Cómo puedo comprobar que se crea desde la interfaz A que el objeto B?
que podría hacer probarlo de esta forma:
var b = new B();
var asInterface = x as A;
if (asInterface == null)
{
//not of the interface A!
}
Encontramos que sea práctico para usar las siguientes:
IMyInterface = instance as IMyInterface;
if (intance != null)
{
//do stuff
}
'como' es el más rápido que 'es', también guarda una serie de moldes - si la instancia impelments IMyInterface, necesitará ningún más moldes.
No estoy tan preocupado por la velocidad, semánticamente creo que es más apropiado usarlo – Makach
@Dmitry - ¿tiene enlaces de prueba con pruebas ?. Porque acabo de probar 1000000000 iteración con "es" y "como" y "es" es un poco más rápido – Stecya
allí va: http://stackoverflow.com/questions/496096/casting-vs-using-the-as-keyword- in-the-clr, también ¿qué vas a hacer después de que Devuelve true? ¿Lanzar de nuevo? :) –
¿Qué quiere decir con "se crea desde la interfaz A"? Puede decir que puede usar el valor de 'b' como referencia a una implementación de' A' por el hecho de que está asignado a una variable de tipo 'A' ... aclare su pregunta. –