Domanda

So come testare un oggetto per vedere se è di un tipo, usando la parola chiave IS, ad es.

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

ma come si verifica che non sia "bar"? Non riesco a trovare una parola chiave che funzioni con IS per verificare un risultato negativo.

A proposito, ho la terribile sensazione che sia così ovvio, quindi mi scuso in anticipo...

È stato utile?

Soluzione

if (!(foo is bar)) {
}

Altri suggerimenti

Puoi anche usare il come operatore.

L'operatore AS viene utilizzato per eseguire conversioni tra tipi compatibili.

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

Non esiste una parola chiave specifica

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

Dovresti chiarire se vuoi testare che un oggetto lo sia esattamente un certo tipo o assegnabile da un certo tipo.Per esempio:

public class Foo : Bar {}

E supponiamo di avere:

Foo foo = new Foo();

Se vuoi sapere se foo non è Bar(), allora dovresti fare questo:

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

Ma se vuoi assicurarti che foo non derivi da Bar, allora un controllo semplice è usare la parola chiave as.

Bar bar = foo as Bar;
if(bar == null) {/* foo is not a bar */}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top