Sé de is
y as
para instanceof
, pero ¿qué ocurre con el método reflexivo isInstance()?¿Cuál es el C# equivalente a la instancia de Java()?
Respuesta
El equivalente de Java de obj.getClass().isInstance(otherObj)
en C# es el siguiente:
bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());
Nota que mientras tanto Java y C# trabajo sobre 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()
), Java isInstance
toma un objeto como argumento, mientras que C# 's IsAssignableFrom
espera otro objeto System.Type
.
justo al lado de la parte superior de la cabeza, también se puede hacer:
bool result = ((obj as MyClass) != null)
No estoy seguro de que sería un mejor desempeño. Lo dejo hasta que otra persona de referencia :)
bool result = (obj is MyClass); // Better than using 'as'
¿Funciona incluso para las clases que usan herencia? ('new Child() is Parent') –
sí lo hace, exactamente cómo se muestra arriba –
probado aquí, funciona para las clases que el usuario hereda. Gracias hombre. –
Depende, utilice is
si no desea utilizar el resultado del reparto y utilizar as
si lo hace. Casi nunca desea escribir:
if(foo is Bar) {
return (Bar)foo;
}
En lugar de:
var bar = foo as Bar;
if(bar != null) {
return bar;
}
A continuación código puede ser alternativa a IsAssignableFrom
.
parentObject.GetType().IsInstanceOfType(inheritedObject)
Ver Type.IsInstanceOfType descripción en MSDN.
- 1. ¿Cuál es el equivalente de C# de Java DecimalFormat?
- 2. ¿cuál es el equivalente de C# de static {...} en Java?
- 3. ¿Cuál es el equivalente de LinkedHashSet (Java) en C#?
- 4. ¿Cuál es la C equivalente a la declaración C++ cin?
- 5. ¿Cuál es la JVM equivalente en C#?
- 6. ¿Cuál es el equivalente de issubclass de instancia en python?
- 7. ¿Cuál es el equivalente de Java a este preg_replace?
- 8. Cuál es el C# expresión regular equivalente a la de Java y appendReplacement appendTail
- 9. ¿Cuál es el equivalente de Scala del ClassName.class de Java?
- 10. ¿Cuál es la corriente de C++ equivalente a perror?
- 11. ¿Cuál es el equivalente a .NET SortedDictionary, en Java?
- 12. ¿Cuál es el equivalente de VB.NET a este código C#?
- 13. ¿Cuál es el equivalente de C# de java.util.regex?
- 14. ¿Cuál es la función equivalente de 'nth_element' en Java?
- 15. ¿Cuál es el equivalente de C# al dynamic_cast de C++?
- 16. ¿Cuál es el equivalente a + = en Matlab?
- 17. ¿Cuál es el equivalente de largo sin signo en Java
- 18. ¿Cuál es el equivalente de Java RegEx a la cláusula SQL LIKE de "% A% B%"?
- 19. ¿Cuál es el equivalente de python a "a" .. "azc"
- 20. En Objective-C, ¿cuál es el equivalente de la palabra clave "instanceof" de Java?
- 21. ¿Cuál es el equivalente de Math.abs() en Objective-C?
- 22. ¿Cuál es la de C++ equivalente al C# using
- 23. ¿Cuál es el equivalente de sincronizado en Objective-C?
- 24. ¿Cuál es el equivalente .NET de NumberFormatException de Java?
- 25. ¿Cuál es el equivalente de Java de AggregateException de .net?
- 26. ¿Cuál es el equivalente de la palabra clave 'var' de C# en Java?
- 27. ¿Cuál es el equivalente de la enumeración de Java en C#?
- 28. C# Equivalente a Java IdentityHashMap
- 29. ¿Cuál es el equivalente Java de PHP var_dump?
- 30. ¿Cuál es el equivalente de Smalltalk de Java estático?
Nota IsAssignableFrom toma un Tipo, no un objeto, por lo que necesita hacer OtherObj.getType(). – FlySwat
Gracias Jon, y recuerda, ¡esta es una wiki! No me molesta que la gente corrija mis errores. –
interesante ... en Java, la JVM trata especialmente "instanceof", al parecer es muy muy rápido, lo que puede explicar por qué es inusualmente una palabra clave (también hay un método isAssignable en java). –