Pergunta

Eu sei como testar um objeto para ver se ele é de um tipo, usando a palavra-chave É e.g.

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

mas como você o teste para ele não ser "bar"?, Eu não consigo encontrar uma palavra-chave que trabalha É para testar se um resultado negativo.

BTW - eu tenho uma horrível sensação de que esta é soooo óbvio, portanto, desculpas antecipadamente...

Foi útil?

Solução

if (!(foo is bar)) {
}

Outras dicas

Você também pode usar o como operador de.

O operador é usado para executar conversões entre tipos compatíveis.

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

Não há nenhuma palavra-chave específica,

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

Você deverá esclarecer se pretende testar se um objeto é exatamente um determinado tipo ou atribuível a partir de um determinado tipo.Por exemplo:

public class Foo : Bar {}

E suponha que você tenha:

Foo foo = new Foo();

Se você quer saber se o foo não é Bar(), em seguida, você poderia fazer isso:

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

Mas se você deseja certificar-se de que o foo não deriva da Barra, em seguida, verificar facilmente é usar a palavra-chave.

Bar bar = foo as Bar;
if(bar == null) {/* foo is not a bar */}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top