Quel est l'équivalent C # de isInstance () de Java?
-
08-07-2019 - |
Question
Je sais que est
et en tant que
pour instance de
, mais qu'en est-il de l'élément réfléchissant méthode isInstance () ?
La solution
L’équivalent de obj.getClass (). isInstance (otherObj)
de Java est le suivant:
bool result = obj.GetType().IsAssignableFrom(otherObj.GetType());
Notez que bien que Java et C # fonctionnent sur l'objet de type à l'exécution (Java java.lang.Class
C # System.Type
) d'un obj
(via .getClass ()
vs .getType ()
), le isInstance
de Java prend un objet comme argument, alors que le code System.Type
.
Autres conseils
bool result = (obj is MyClass); // Better than using 'as'
Dépend, utilisez est
si vous ne souhaitez pas utiliser le résultat de la conversion et utilisez comme
si vous le faites. Vous ne voulez presque jamais écrire:
if(foo is Bar) {
return (Bar)foo;
}
Au lieu de:
var bar = foo as Bar;
if(bar != null) {
return bar;
}
juste au dessus de ma tête, vous pourriez aussi faire:
bool result = ((obj as MyClass) != null)
Je ne sais pas ce qui fonctionnerait mieux. Je laisserai à quelqu'un d'autre le soin de comparer:)
Le code ci-dessous peut être une alternative à IsAssignableFrom
.
parentObject.GetType().IsInstanceOfType(inheritedObject)
Voir Type.IsInstanceOfType description dans MSDN.