Freigeben über


Der is Operator (C#-Referenz)

Der is Operator überprüft, ob das Ergebnis eines Ausdrucks mit einem bestimmten Typ kompatibel ist. Informationen zum Typtestoperator is finden Sie im Abschnitt " Operator " des Artikels " Typtests und Umwandlungsoperatoren ". Sie können den is Operator auch verwenden, um einen Ausdruck mit einem Muster abzugleichen, wie das folgende Beispiel zeigt:

static bool IsFirstFridayOfOctober(DateTime date) =>
    date is { Month: 10, Day: <=7, DayOfWeek: DayOfWeek.Friday };

Im vorherigen Beispiel stimmt der is Operator mit einem Ausdruck mit einem Eigenschaftenmuster mit geschachtelten Konstanten - und relationalen Mustern überein.

Die C#-Sprachreferenz dokumentiert die zuletzt veröffentlichte Version der C#-Sprache. Außerdem enthält sie eine erste Dokumentation zu Funktionen in der öffentlichen Vorschau für die kommende Sprachversion.

In der Dokumentation werden alle Features identifiziert, die in den letzten drei Versionen der Sprache oder in der aktuellen öffentlichen Vorschau eingeführt wurden.

Tipp

Informationen dazu, wann ein Feature erstmals in C# eingeführt wurde, finden Sie im Artikel zum Versionsverlauf der C#-Sprache.

Der is Operator kann in den folgenden Szenarien nützlich sein:

  • So überprüfen Sie den Laufzeittyp eines Ausdrucks, wie im folgenden Beispiel gezeigt:

    int i = 34;
    object iBoxed = i;
    int? jNullable = 42;
    if (iBoxed is int a && jNullable is int b)
    {
        Console.WriteLine(a + b);  // output 76
    }
    

    Im vorherigen Beispiel wird die Verwendung eines Deklarationsmusters veranschaulicht.

  • So überprüfen nullSie nach , wie im folgenden Beispiel gezeigt:

    if (input is null)
    {
        return;
    }
    

    Wenn Sie mit einem Ausdruck nullübereinstimmen, garantiert der Compiler, dass kein Benutzer überladen == oder != operator aufgerufen wird.

  • Gehen Sie wie im folgenden Beispiel vor, um eine Nicht-NULL-Überprüfung mithilfe eines Negationsmusters auszuführen:

    if (result is not null)
    {
        Console.WriteLine(result.ToString());
    }
    
  • Um Elemente einer Liste oder eines Arrays mithilfe von Listenmustern abzugleichen. Der folgende Code überprüft Arrays auf ganzzahlige Werte in erwarteten Positionen:

    int[] empty = [];
    int[] one = [1];
    int[] odd = [1, 3, 5];
    int[] even = [2, 4, 6];
    int[] fib = [1, 1, 2, 3, 5];
    
    Console.WriteLine(odd is [1, _, 2, ..]);   // false
    Console.WriteLine(fib is [1, _, 2, ..]);   // true
    Console.WriteLine(fib is [_, 1, 2, 3, ..]);     // true
    Console.WriteLine(fib is [.., 1, 2, 3, _ ]);     // true
    Console.WriteLine(even is [2, _, 6]);     // true
    Console.WriteLine(even is [2, .., 6]);    // true
    Console.WriteLine(odd is [.., 3, 5]); // true
    Console.WriteLine(even is [.., 3, 5]); // false
    Console.WriteLine(fib is [.., 3, 5]); // true
    

Hinweis

Eine vollständige Liste der vom is Operator unterstützten Muster finden Sie unter "Patterns".

C#-Sprachspezifikation

Weitere Informationen finden Sie im Abschnitt "Is is" der C#-Sprachspezifikation und des Musterabgleichs.

Siehe auch