Percursos
/
C#
C#
/
Programa
/
Instruções switch
In

Instruções switch em C#

2 exercícios

Sobre Instruções switch

As instruções switch têm uma longa história nas linguagens de programação. Foram introduzidas em C, onde eram apreciadas pela sua rapidez. Essa rapidez tinha como preço uma funcionalidade muito limitada. Em C#, o papel da instrução switch foi alargado para além dos inteiros. As instruções switch podem abranger qualquer tipo, valor ou referência arbitrários.

Se vens de uma linguagem funcional, trabalhar com instruções switch (e com as expressões switch abordadas noutro sítio) é o mais próximo que vais chegar, em C#, do uso de uniões discriminadas e de correspondência de padrões. No entanto, estão muito longe do poder das uniões discriminadas para garantir a segurança de tipos.

As instruções switch simples assemelham-se às suas antecessoras em C, combinando switch, case, break e default.

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

O padrão acima pode ser usado com qualquer tipo simples (primitivos + strings).

Quando se juntam tipos de referência à mistura, entra em jogo sintaxe adicional, primeiro para fazer a conversão descendente do tipo e depois para acrescentar guardas (when), embora as guardas também possam ser usadas com cláusulas case de valores simples. Isto é ilustrado abaixo:

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;
}
  • A cláusula default é opcional, mas normalmente desejável.
  • A instrução break é obrigatória em qualquer cláusula case não vazia.
  • Obviamente, o tipo de todos os argumentos das etiquetas case tem de derivar do tipo do argumento do switch. Um argumento do switch do tipo Object permite, obviamente, a maior variedade.
  • A expressão de guarda pode incluir tudo o que esteja no âmbito, não apenas membros do argumento case.
  • Vários case com argumentos case diferentes podem referir-se ao mesmo bloco de código.

A documentação da instrução switch apresenta uma introdução às instruções switch.

Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Instruções switch

A prática está bloqueada

Desbloqueia mais 6 exercícios para praticares Instruções switch