Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
El operador is
comprueba si el resultado de una expresión es compatible con un tipo determinado. Para obtener información sobre el operador de prueba de tipos is
, vea la sección operador is del artículo Operadores de conversión y prueba de tipos. También puede usar el operador is
para comparar una expresión con un patrón, tal 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 operador is
compara una expresión con un patrón de propiedad con patrones constantes y relacionales anidados.
El operador is
puede resultar ú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
null
, como se muestra en el ejemplo siguiente:if (input is null) { return; }
Al comparar una expresión con
null
, el compilador garantiza que no se invoca 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()); }
A partir de C# 11, 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 operador is
, vea Patrones.
Especificación del lenguaje C#
Para más información, consulte la sección El operador de la especificación del lenguaje C#y de coincidencia de patrones.