Aprender a criar estruturas de condição é fundamental para programar a lógica de um sistema. Essas estruturas permitem a execução de diferentes linhas de código (diferentes fluxos de execução) a partir da avaliação de uma condição. Na linguagem C# temos dois recursos com esse propósito: if/else e switch/case.

Como utilizar a estrutura condicional Switch/Case do C#

Neste documento apresentamos como criar estruturas de condição utilizando o switch/case.

Switch/Case

Switch/case é uma estrutura de condição que define o código a ser executado com base em uma comparação de valores.

Para que isso fique mais claro, vejamos a sintaxe do switch/case:

switch (variável ou valor)
{
case valor1:
      // código 1
break;
case valor2:
      // código 2
break;
}

Na linha 1, em switch (variável ou valor), definimos a variável ou valor que desejamos comparar. Na linha 3, informamos que se o valor declarado neste case for igual ao contido no switch, código 1 será executado. O mesmo comportamento se aplica ao segundo case. Ademais, caso o valor contido no switch não seja atendido em uma das condições, nenhum bloco será executado.

E o comando break? O comando break é utilizado para especificar a última linha de código a ser executada dentro da condição. Se não declarado, os códigos implementados dentro dos cases subsequentes serão executados.

Caso deseje executar o mesmo código para valores diferentes, você pode programar o switch/case da seguinte forma:

  switch (variável ou valor)
  {
            case valor1:
            case valor2:
            case valor3:
                      // código 1
                      break;
            case valor4:
            case valor5:
            case valor6:
                      // código 2
                      break;
  }

Neste caso, declaramos dois blocos de código. O primeiro (código 1) será executado caso o valor do switch seja igual a valor1, valor2 ou valor3; e o segundo (código 2), caso o valor seja igual a valor4, valor5 ou valor6.

Default

O operador default é utilizado quando precisamos definir um fluxo alternativo para as situações em que o valor contido no switch não seja atendido por nenhum dos cases especificados.

  switch (variável ou valor)
  {
  case valor1:
            // código 1
  break;
  case valor2:
            // código 2
  break;
  default:
            // código 3
            break;
  }
  

Caso o valor do switch não seja igual a um dos valores contidos nos cases, o sistema irá executar o código implementado no bloco default; neste exemplo, o código 3.

Nota: O operador default é opcional e o código nele implementado também deve ser finalizado com a instrução break.

Exemplo prático

Para demonstrar um exemplo de switch/case, considere um programa que informa ao usuário a quantidade de dias de um mês a partir do nome de um mês por ele informado.

Com esse intuito, a partir de uma variável do tipo string (mes) implementamos o código abaixo:

switch (mes)
{
    case "Janeiro":
    case "Março":
    case "Maio":
    case "Julho":
    case "Agosto":
    case "Outubro":
    case "Dezembro":
                        Console.WriteLine("Este mês tem 31 dias");
                        break;
    case "Fevereiro":
                        Console.WriteLine("Este mês tem 28 ou 29 dias");
                        break;
    default:
                        Console.WriteLine("Este mês tem 30 dias");
                        break;
}
  

Com esse código informamos ao sistema para comparar o valor da variável mes aos valores contidos nos cases. Se o valor da variável mes for igual a “Janeiro”, “Março”, “Maio”, “Julho”, “Agosto”, “Outubro” ou “Dezembro”, o sistema irá informar que o mês tem 31 dias; se o valor presente em mes for “Fevereiro”, que o mês tem 28 ou 29 dias; e, para qualquer outro valor, que o mês possui 30 dias.