Test d'un objet pour ne PAS être un type
Question
Je sais comment faire pour tester un objet pour voir si elle est d'un type, en utilisant le mot-clé is par exemple
if (foo is bar)
{
//do something here
}
mais comment faites-vous tester pour elle de ne pas être "bar"?, Je n'arrive pas à trouver un mot-clé qui travaille avec EST de tester pour un résultat négatif.
BTW j'ai un horrible sentiment que c'est tellement évident, alors, toutes mes excuses à l'avance...
La solution
if (!(foo is bar)) {
}
Autres conseils
Vous pouvez également utiliser l' en tant qu'opérateur.
L'opérateur est utilisé pour effectuer les conversions entre les types compatibles.
bar aBar = foo as bar; // aBar is null if foo is not bar
Il n'y a pas de mot-clé spécifique
if (!(foo is bar)) ...
if (foo.GetType() != bar.GetType()) .. // foo & bar should be on the same level of type hierarchy
Vous devez préciser si vous voulez tester qu'un objet est exactement un certain type ou assignables à partir d'un certain type.Par exemple:
public class Foo : Bar {}
Et supposons que vous avez:
Foo foo = new Foo();
Si vous voulez savoir si toto n'est pas Bar(), alors vous feriez cela:
if(!(foo.GetType() == tyepof(Bar))) {...}
Mais si vous voulez vous assurer que toto ne provient pas de Bar, puis un contrôle facilité est d'utiliser comme mot-clé.
Bar bar = foo as Bar;
if(bar == null) {/* foo is not a bar */}