what - ¿Cuál es el equivalente de C#al isInstance() de Java?
system.reflection c# (5)
Sé de is
y en as
a instanceof
, pero ¿qué pasa con el isInstance() reflectiveInstance isInstance() ?
Depende, use si no quieres usar el resultado del yeso y lo usas as
si lo hicieras. Casi nunca quieres escribir:
if(foo is Bar) {
return (Bar)foo;
}
En lugar de:
var bar = foo as Bar;
if(bar != null) {
return bar;
}
El equivalente de obj.getClass().isInstance(otherObj)
en C # es el siguiente:
bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());
Tenga en cuenta que si bien Java y C # trabajan en el objeto de tipo de tiempo de ejecución (Java java.lang.Class
≣ C # System.Type
) de un obj
(a través de .getClass()
vs .getType()
), la isInstance
de isInstance
de Java toma un objeto como argumento , mientras que C # ''s IsAssignableFrom
espera otro objeto System.Type
.
El siguiente código puede ser alternativo a IsAssignableFrom
.
parentObject.GetType().IsInstanceOfType(inheritedObject)
Consulte la descripción de Type.IsInstanceOfType en MSDN.
justo fuera de mi cabeza, también podrías hacer:
bool result = ((obj as MyClass) != null)
No estoy seguro de cuál funcionaría mejor. Lo dejaré en manos de otra persona para compararlo :)
bool result = (obj is MyClass); // Better than using ''as''