Patrones relacionales y lógicos
Combine condiciones en patrones
Patrones relacionales y lógicos es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.
Patrones relacionales
Un patrón relacional compara la entrada con una constante mediante <, >, <= o >=. Coincide cuando la comparación es verdadera.
Introducidos en C# 9, los patrones relacionales hacen más concisas las comprobaciones de rangos en ramas switch y expresiones is, sin necesidad de escribir comparaciones explícitas.
int temp = 18;
string level = temp switch
{
< 0 => "freezing",
< 15 => "cold",
< 25 => "mild",
_ => "hot"
};
System.Console.WriteLine(level);Patrones relacionales con is
Los patrones relacionales también funcionan en expresiones is, lo que permite escribir comprobaciones booleanas legibles.
n is > 0 se lee casi como una frase y devuelve un bool que puede usar en condiciones, asignaciones o predicados de LINQ.
using System;
class Program {
static void Main() {
int score = 82;
bool passed = score is >= 60;
Console.WriteLine(passed);
}
}El patrón and
El patrón lógico and requiere que coincidan ambos subpatrones. Es perfecto para rangos delimitados.
>= 1 and <= 12 coincide con los valores incluidos en un rango. Sin and, sería imposible expresar límites a ambos lados en un único patrón.
int month = 6;
bool valid = month is >= 1 and <= 12;
System.Console.WriteLine(valid);El patrón or
El patrón lógico or coincide cuando coincide cualquiera de los subpatrones. Agrupa valores alternativos en una sola rama.
En lugar de repetir ramas para casos relacionados, 'a' or 'e' or 'i' los agrupa. Esto mantiene las expresiones switch compactas y deja clara su intención.
char c = 'e';
string kind = c switch
{
'a' or 'e' or 'i' or 'o' or 'u' => "vowel",
_ => "consonant"
};
System.Console.WriteLine(kind);El patrón not
El patrón lógico not coincide cuando su subpatrón no coincide. Su uso más habitual es not null.
También niega otros patrones, como not 0 o not (> 100), lo que permite expresar exclusiones con claridad dentro de una sola rama.
object? value = "hi";
if (value is not null)
System.Console.WriteLine("present");Combinar patrones lógicos
Los patrones lógicos se pueden combinar. Puede encadenar and, or y not para crear condiciones complejas, utilizando paréntesis para controlar la precedencia.
La precedencia es la siguiente: not se vincula con mayor fuerza, seguido de and y, por último, or. Añada paréntesis siempre que la intención pueda resultar ambigua.
using System;
class Program {
static string Classify(int n) => n switch {
< 0 or > 100 => "out of range",
>= 0 and <= 50 => "low half",
_ => "high half"
};
static void Main() => Console.WriteLine(Classify(75));
}Rangos en la calificación
Los patrones relacionales y lógicos permiten modelar de forma clara las tablas de calificación clásicas.
Como las ramas se comprueban de arriba abajo, puede usar límites superiores sencillos o combinar límites con and para expresar rangos explícitos. Ambos estilos son válidos; elija el más claro.
using System;
class Program {
static char Grade(int s) => s switch {
>= 90 => 'A',
>= 80 and < 90 => 'B',
>= 70 and < 80 => 'C',
_ => 'F'
};
static void Main() => Console.WriteLine(Grade(85));
}not null con patrones de propiedades
Combinar not null con patrones de tipo y de propiedades produce guardas seguras y expresivas.
obj is Person { Name: not null } p coincide con una instancia de Person que no es nula y cuyo Name tampoco es nulo, y la asigna. Esto evita comprobaciones de valores nulos encadenadas.
record Person(string? Name);
object obj = new Person("Kai");
if (obj is Person { Name: not null } p)
System.Console.WriteLine(p.Name);Negar rangos
Puede negar un grupo relacional con not y paréntesis para expresar exclusiones.
not (>= 1 and <= 5) coincide con cualquier valor fuera del rango del 1 al 5. Para algunos lectores, esto resulta más directo que el equivalente < 1 or > 5.
using System;
class Program {
static void Main() {
int n = 9;
bool outside = n is not (>= 1 and <= 5);
Console.WriteLine(outside);
}
}Combinar con patrones de tipo
Los patrones lógicos también pueden combinarse con patrones de tipo. o is int or long coincide con tipos numéricos enteros en una sola comprobación.
Esto resulta útil para tratar varios tipos relacionados de manera uniforme. Tenga en cuenta que ambos lados de or deben ser compatibles con el uso que se haga del resultado.
object o = 5L;
string kind = o switch
{
int or long => "integral",
float or double => "floating",
_ => "other"
};
System.Console.WriteLine(kind);Pautas de legibilidad
Los patrones lógicos son expresivos, pero pueden volverse densos. Mantenga las ramas cortas, prefiera los rangos con and y use paréntesis con and/or combinados para mejorar la claridad.
Cuando una condición necesita muchas cláusulas o variables externas, una guarda when puede resultar más fácil de leer que un patrón lógico extenso. Elija la opción que comunique mejor la intención.
int n = 42;
string r = n switch
{
> 0 and < 10 when n % 2 == 0 => "small even",
_ => "other"
};
System.Console.WriteLine(r);Comprobación rápida
Compruebe su comprensión de los patrones relacionales y lógicos.
Repaso
Los patrones relacionales (< > <= >=) comparan con constantes. Los patrones lógicos combinan subpatrones con and, or y not.
La precedencia es not, después and y luego or; use paréntesis cuando los combine. A continuación veremos los patrones de listas y tuplas.
Preguntas frecuentes
¿La lección «Patrones relacionales y lógicos» es gratis?
Sí — el texto completo de «Patrones relacionales y lógicos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Patrones relacionales y lógicos»?
Combine condiciones en patrones Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Patrones relacionales y lógicos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Expresiones switch
- Patrones de tipos y propiedades
- Patrones relacionales y lógicos
- Patrones de listas y tuplas