Pregunta

Sé cómo probar un objeto para ver si es de un tipo, usando la palabra clave IS, por ejemplo.

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

pero ¿cómo se prueba que no sea "barra"? Parece que no puedo encontrar una palabra clave que funcione con IS para probar un resultado negativo.

Por cierto, tengo la horrible sensación de que esto es tan obvio, así que me disculpo de antemano...

¿Fue útil?

Solución

if (!(foo is bar)) {
}

Otros consejos

También puedes utilizar el como operador.

El operador AS se utiliza para realizar conversiones entre tipos compatibles.

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

No hay una palabra clave específica

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

Debe aclarar si desea probar que un objeto es exactamente cierto tipo o asignable de cierto tipo.Por ejemplo:

public class Foo : Bar {}

Y supongamos que tienes:

Foo foo = new Foo();

Si quieres saber si foo no es Bar(), entonces debes hacer esto:

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

Pero si quiere asegurarse de que foo no derive de Bar, entonces una comprobación sencilla es utilizar la palabra clave as.

Bar bar = foo as Bar;
if(bar == null) {/* foo is not a bar */}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top