Tracks
/
C#
C#
/
Temario
/
Instrucciones switch
In

Instrucciones switch en C#

2 ejercicios

Acerca de Instrucciones switch

Las instrucciones switch tienen una venerable historia en los lenguajes de programación. Se introdujeron en C, donde se apreciaban por su velocidad. Esa velocidad se conseguía a costa de una funcionalidad muy limitada. En C#, el papel de la instrucción switch se ha ampliado más allá de los números enteros. Las instrucciones switch pueden abarcar cualquier tipo, valor o referencia arbitrarios.

Si vienes de un lenguaje funcional, trabajar con instrucciones switch (y con las expresiones switch, que se tratan en otro lugar) es lo más parecido que encontrarás en C# al uso de uniones discriminadas y coincidencia de patrones. Sin embargo, no se acercan ni de lejos a la capacidad de las uniones discriminadas para garantizar la seguridad de tipos.

Las instrucciones switch simples se parecen a sus antepasados de C, ya que combinan switch, case, break y default.

int direction = GetDirection();
switch (direction)
{
    case 1:
        GoLeft();
        break;
    case 2:
        GoRight();
        break;
    default:
        MarkTime();
        break;
}

El patrón anterior se puede usar con cualquier tipo simple (primitivos + strings).

Cuando se añaden tipos de referencia a la mezcla, entra en juego sintaxis adicional: primero para hacer una conversión descendente del tipo y luego para añadir guardas (when), aunque las guardas también se pueden usar con casos de valores simples. Esto se ilustra a continuación:

Animal animal = GetAnimal();

switch(animal)
{
    case Dog canine:
    case Coyote canine:
        canine.Bark();
        break;
    case Cat cat when cat.HasOnly8Lives():
        cat.IsCareful();
        cat.Meow();
        break;
    case Cat cat:
        cat.Meow();
        break;
}
  • La cláusula default es opcional, pero normalmente resulta deseable.
  • La instrucción break es obligatoria para cualquier cláusula case que no esté vacía.
  • Obviamente, el tipo de todos los argumentos de las etiquetas case debe derivarse del tipo del argumento de switch. Un argumento de switch de tipo Object permite, obviamente, la mayor variedad.
  • La expresión de guarda puede incluir cualquier cosa que esté dentro del scope, no solo miembros del argumento de case.
  • Varios case con argumentos case distintos pueden referirse al mismo bloque de código.

La documentación de la instrucción switch ofrece una introducción a las instrucciones switch.

Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Instrucciones switch

La práctica está bloqueada

Desbloquea 6 ejercicios más para practicar Instrucciones switch