is (Riferimenti per C#)
Controlla se un oggetto è compatibile con un determinato tipo. Ad esempio, il codice seguente può determinare se un oggetto è un'istanza del tipo MyObject o un tipo che deriva da MyObject:
if (obj is MyObject)
{
}
Un'espressione is restituisce true se l'espressione fornita non è null e l'oggetto fornito può essere sottoposto a cast sul tipo fornito senza generare un'eccezione.
La parola chiave is causa un avviso in fase di compilazione se l'espressione è sempre true oppure false, ma in genere valuta la compatibilità dei tipi in fase di esecuzione.
Non è possibile sottoporre l'operatore is a overload.
È possibile utilizzare l'operatore is soltanto con le conversioni dei riferimenti, le conversioni boxing e le conversioni unboxing. Altre conversioni, ad esempio quelle definite dall'utente, non sono considerate.
Non è possibile utilizzare metodi anonimi sul lato sinistro dell'operatore is. Questa eccezione include le espressioni lambda.
Esempio
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.
*/
Specifiche del linguaggio C#
Per altre informazioni, vedere la Specifiche del linguaggio C#. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.
Vedere anche
Riferimenti
Parole chiave per operatori (Riferimenti per C#)