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 () ?

Était-ce utile?

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 IsAssignableFrom attend un autre objet 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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top