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''