Frage

Ich weiß, wie man ein Objekt testet, um zu sehen, ob es von einem Typ ist, indem ich das Schlüsselwort IS verwende, z. B.

if (foo is bar)
{
  //do something here
}

Aber wie testet man, ob es nicht „bar“ ist? Ich kann anscheinend kein Schlüsselwort finden, das mit IS funktioniert, um auf ein negatives Ergebnis zu testen.

Übrigens – ich habe das schreckliche Gefühl, dass das soooo offensichtlich ist, also entschuldige mich im Voraus ...

War es hilfreich?

Lösung

if (!(foo is bar)) {
}

Andere Tipps

Sie können auch die als Operator .

  

Der als Operator wird benutzt, um   Konvertierungen zwischen kompatibelen Typen.

bar aBar = foo as bar; // aBar is null if foo is not bar

Es gibt kein spezifisches Schlüsselwort

if (!(foo is bar)) ...
if (foo.GetType() != bar.GetType()) .. // foo & bar should be on the same level of type hierarchy

Sie sollten klären, ob Sie testen möchten, dass ein Objekt genau eine bestimmte Art oder zuweisbare von einem bestimmten Typ. Zum Beispiel:

public class Foo : Bar {}

Und wenn Sie haben:

Foo foo = new Foo();

Wenn Sie wissen wollen, ob foo ist nicht bar (), dann würden Sie dies tun:

if(!(foo.GetType() == tyepof(Bar))) {...}

Aber wenn Sie sicherstellen möchten, dass foo nicht von Bar nicht ableiten, dann eine einfache Prüfung ist das als Schlüsselwort zu verwenden.

Bar bar = foo as Bar;
if(bar == null) {/* foo is not a bar */}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top