Compartir vía


Operador is (referencia de C#)

El is operador comprueba si el resultado de una expresión es compatible con un tipo determinado. Para obtener información sobre el operador de pruebas is de tipos, consulte la sección operador is del artículo Operadores de conversión y pruebas de tipos. También puede usar el is operador para hacer coincidir una expresión con un patrón, como se muestra en el ejemplo siguiente:

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

En el ejemplo anterior, el is operador coincide con una expresión con un patrón de propiedad con patrones constantes anidados y relacionales .

El is operador puede ser útil en los siguientes escenarios:

  • Para comprobar el tipo en tiempo de ejecución de una expresión, como se muestra en el ejemplo siguiente:

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

    En el ejemplo anterior se muestra el uso de un patrón de declaración.

  • Para comprobar si hay null, como se muestra en el ejemplo siguiente:

    if (input is null)
    {
        return;
    }
    

    Al hacer coincidir una expresión con null, el compilador garantiza que no se invoque ningún operador o == sobrecargado != por el usuario.

  • Puede usar un patrón de negación para realizar una comprobación que no sea NULL, como se muestra en el ejemplo siguiente:

    if (result is not null)
    {
        Console.WriteLine(result.ToString());
    }
    
  • Puede usar patrones de lista para buscar coincidencias con elementos de una lista o matriz. El código siguiente comprueba las matrices de valores enteros en las posiciones esperadas:

    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
    

Nota:

Para obtener la lista completa de patrones admitidos por el is operador, vea Patrones.

Especificación del lenguaje C#

Para obtener más información, consulte la sección Operador is de la especificación del lenguaje C# y coincidencia de patrones.

Consulte también