is (Referencia de C#)
Actualización: noviembre 2007
Comprueba si un objeto es compatible con un tipo determinado. Por ejemplo, el código siguiente puede determinar si un objeto es una instancia del tipo MyObject o un tipo que se deriva de MyObject:
if (obj is MyObject)
{
}
Una expresión is se evalúa como true si la expresión proporcionada no es NULL y el objeto proporcionado se puede convertir al tipo proporcionado sin producir una excepción.
La palabra clave is genera una advertencia en tiempo de compilación si se sabe que la expresión siempre será true o siempre será false, pero normalmente evalúa la compatibilidad de tipos en tiempo de ejecución.
El operador is no se puede sobrecargar.
Observe que el operador is solamente tiene en cuenta las conversiones de referencia, las conversiones boxing y las conversiones unboxing. No se tienen en cuenta otras conversiones, tales como las conversiones definidas por el usuario.
No se permite el uso de métodos anónimos en el lado izquierdo del operador is. Esta excepción incluye expresiones lambda.
Ejemplo
class Class1 {}
class Class2 {}
class Class3 : Class2 { }
class IsTest
{
static void Test(object o)
{
Class1 a;
Class2 b;
if (o is Class1)
{
Console.WriteLine("o is Class1");
a = (Class1)o;
// Do something with "a."
}
else if (o is Class2)
{
Console.WriteLine("o is Class2");
b = (Class2)o;
// Do something with "b."
}
else
{
Console.WriteLine("o is neither Class1 nor Class2.");
}
}
static void Main()
{
Class1 c1 = new Class1();
Class2 c2 = new Class2();
Class3 c3 = new Class3();
Test(c1);
Test(c2);
Test(c3);
Test("a string");
}
}
/*
Output:
o is Class1
o is Class2
o is Class2
o is neither Class1 nor Class2.
*/
Especificación del lenguaje C#
Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.
7.6.6 Expresiones de conversión
7.9.10 El operador is
Vea también
Conceptos
Referencia
Palabras clave de operadores (Referencia de C#)