C# proporciona constructos de flujo de control estándar — condicionales (, ), bucles (, , ) y ramificación (, , ) — más mejoras modernas como expresiones switch y coincidencia de patrones que hacen el código más conciso.
ifswitchforforeachwhilebreakcontinuereturnif (score >= 90)
grade = "A";
else if (score >= 80)
grade = "B";
else
grade = "F";
// ternary and null-coalescing
string status = age >= 18 ? "adult" : "minor";
string name = input ?? "default"; // ?? — use default if input is null
name ??= "fallback"; // ??= assign if null
// traditional switch
switch (day)
{
case "Sat":
case "Sun":
type = "weekend";
break; // break required (no fall-through)
default:
type = "weekday";
break;
}
// switch EXPRESSION (C# 8) — concise, returns a value, with pattern matching
string type = day switch
{
"Sat" or "Sun" => "weekend",
_ => "weekday", // _ = default
};
// pattern matching in switch
string describe = obj switch
{
int n when n > 0 => "positive int",
string s => $"string of length {s.Length}",
null => "null",
_ => "other",
};
La expresión switch moderna es concisa (devuelve un valor, sin break), y admite coincidencia de patrones potente (coincidencia de tipos, condiciones y más) — una mejora significativa sobre el switch tradicional verboso.
for (int i = 0; i < 10; i++) { }
foreach (var item in collection) { } // iterate any IEnumerable
while (condition) { }
do { } while (condition); // runs at least once
foreach (iteración de cualquier IEnumerable) es el bucle idiomático para colecciones.
foreach (var item in items)
{
if (item.Skip) continue; // next iteration
if (item.Stop) break; // exit loop
}
return result; // exit method
El flujo de control es el mecanismo básico para expresar lógica en cada programa, por lo que comprender los constructos de C# es conocimiento fundamental cotidiano.
Si bien los conceptos básicos son estándar, las mejoras modernas de C# vale la pena conocer y utilizar: la expresión switch (C# 8+) es una mejora significativa sobre el switch tradicional — concisa, que devuelve un valor, sin errores de caída (sin olvidar break), y compatible con coincidencia de patrones (coincidencia de tipos, condiciones, valores y estructura), lo que hace que la lógica condicional compleja sea mucho más limpia que las cadenas if-else anidadas.
Los operadores de fusión nula (??, ??=) proporcionan manejo limpio de nulos, y foreach es la forma idiomática de iterar colecciones.
Conocer estos constructos y preferir las formas modernas más expresivas (expresiones switch con coincidencia de patrones sobre sentencias switch verbosas, fusión nula para valores predeterminados) es conocimiento cotidiano para escribir C# limpio e idiomático.
La expresión switch y la coincidencia de patrones en particular reflejan la evolución del C# moderno hacia código más funcional y conciso, lo que las hace importantes de entender tanto para escribir código mejor como para leer bases de código de C# actuales que utilizan extensamente estas características.