is (C#-Referenz)
Aktualisiert: November 2007
Überprüft, ob ein Objekt mit einem bestimmten Typ kompatibel ist. Der folgende Code kann beispielsweise feststellen, ob ein Objekt eine Instanz des MyObject-Typs ist oder ein Typ, der von MyObject abgeleitet wird:
if (obj is MyObject)
{
}
Ein is-Ausdruck wird mit true ausgewertet, wenn der bereitgestellte Ausdruck nicht NULL ist und das bereitgestellte Objekt in den bereitgestellten Typ umgewandelt werden kann, ohne dass eine Ausnahme ausgelöst wird.
Das is-Schlüsselwort führt zur Kompilierzeit zu einer Warnung, wenn der Ausdruck bekanntermaßen immer true ist oder wenn er immer false ist, zur Laufzeit aber in der Regel das Ergebnis der Typkompatibilität liefert.
Der Operator is kann nicht überladen werden.
Beachten Sie, dass der Operator is nur Verweis-, Boxing- und Unboxingkonvertierungen berücksichtigt. Andere Konvertierungen, z. B. benutzerdefinierte Konvertierungen, werden nicht berücksichtigt.
Anonyme Methoden werden nicht auf der linken Seite des Operators is zugelassen. Diese Ausnahme schließt Lambda-Ausdrücke ein.
Beispiel
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.
*/
C#-Programmiersprachenspezifikation
Weitere Informationen finden Sie in den folgenden Abschnitten von C#-Programmiersprachenspezifikation:
7.6.6 Typumwandlungsausdrücke
7.9.10 Der Operator "is"
Siehe auch
Konzepte
Referenz
Operatorschlüsselwörter (C#-Referenz)