Delen via


is operator (C#-verwijzing)

De is operator controleert of het resultaat van een expressie compatibel is met een bepaald type. Zie de sectie Operator van het artikel Typetests en cast-operators is voor informatie over de operator voor typetests. U kunt de is operator ook gebruiken om een expressie te vergelijken met een patroon, zoals in het volgende voorbeeld wordt weergegeven:

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

In het voorgaande voorbeeld komt de is operator overeen met een expressie op basis van een eigenschapspatroon met geneste constante en relationele patronen.

De is operator kan handig zijn in de volgende scenario's:

  • Als u het runtimetype van een expressie wilt controleren, zoals in het volgende voorbeeld wordt weergegeven:

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

    In het voorgaande voorbeeld ziet u het gebruik van een declaratiepatroon.

  • Ga als volgt te werk om te controleren op null, zoals in het volgende voorbeeld wordt weergegeven:

    if (input is null)
    {
        return;
    }
    

    Wanneer u een expressie nullaangeeft, garandeert de compiler dat er geen gebruiker overbelast == of != operator wordt aangeroepen.

  • U kunt een negatiepatroon gebruiken om een niet-null-controle uit te voeren, zoals in het volgende voorbeeld wordt weergegeven:

    if (result is not null)
    {
        Console.WriteLine(result.ToString());
    }
    
  • Vanaf C# 11 kunt u lijstpatronen gebruiken om elementen van een lijst of matrix te vinden. Met de volgende code worden matrices gecontroleerd op gehele getallen in verwachte posities:

    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
    

C#-taalspecificatie

Zie de sectie Is operator van de C#-taalspecificatie en patroonkoppeling voor meer informatie.

Zie ook