Decisão múltipla com switch
📽 Veja esta vídeo-aula no Youtube
Testa uma expressão, comparando sequencialmente com diversas outras. Permite que se disponha múltiplos caminhos de execução, de acordo com o valor da primeira expressão.
Exemplo:
Menu de opções
--------------
N. Novo arquivo
A. Abrir arquivo
H. Ajuda
X. Sair
Digite a sua opção: _
Nesse caso, gostaríamos de avaliar o resultado da digitação entre 4 valores disjuntos ("N", "A", "H" e "X").
Comando switch
Implementa a decisão múltipla em C#.
switch (expressaoTeste)
{
case expressaoCaso1:
comandosCaso1Verdadeiro
...
break;
case expressaoCaso2:
comandosCaso2Verdadeiro
...
...
break;
...
default:
comandosTodosCasosFalsos
...
...
break;
}
switch: comando de decisão múltiplaexpressaoTeste: expressão a ser avaliada pelos testescase: um teste de igualdade em relação aexpressaoTesteexpressaoCaso1eexpressaoCaso2: valores inteiros a serem testados contraexpressaoTestecomandosCaso1VerdadeiroecomandosCaso2Verdadeiro: listas de comandos a serem executados caso seus testes avaliem como verdadeirobreak: indica não deve mais executar comandos do blocoswitchdefault(opcional): caso padrão, se nenhum dos casos anteriores for verdadeirocomandosTodosCasosFalsos(opcional): comandos a serem executados no caso padrão
Exemplo:
string opcaoUsuario = "";
Console.WriteLine("Menu de opções");
Console.WriteLine("--------------");
Console.WriteLine("N. Novo arquivo");
Console.WriteLine("A. Abrir arquivo");
Console.WriteLine("H. Ajuda");
Console.WriteLine("X. Sair");
Console.WriteLine("\nDigite a sua opção: ");
opcaoUsuario = Console.ReadLine()!;
Console.WriteLine($"\nOPÇÃO SELECIONADA: {opcaoUsuario}\n");
switch (opcaoUsuario.ToUpper())
{
case "N":
Console.WriteLine("Um arquivo novo será criado.");
break;
case "A":
Console.WriteLine("Um arquivo existente poderá ser aberto.");
break;
case "H":
Console.WriteLine("Uma tela de ajuda será exibida.");
break;
case "X":
Console.WriteLine("Obrigado por utilizar nosso software!");
break;
default:
Console.WriteLine("Opção inválida!");
Environment.Exit(1); // Código de erro
break;
}
Environment.Exit(0); // Código de sucesso
Lista completa de códigos de erro do Windows
Expressão switch
Assim como para decisão simples temos o operador ?:, também temos o operador switch para decisão múltipla inline.
Exemplo:
int opcao = 1;
string mensagem = opcao switch
{
0 => "Solteiro(a)",
1 => "Casado(a)",
2 => "Divorciado(a)",
3 => "Viúvo(a)",
_ => "Outro"
};
Console.WriteLine(mensagem); // Casado(a)
Exemplo 2:
using System.Security.Cryptography;
int naipeSorteado = RandomNumberGenerator.GetInt32(1, 5);
string naipe = naipeSorteado switch
{
1 => "Paus",
2 => "Copas",
3 => "Espadas",
4 => "Ouros"
};
Console.WriteLine(naipe);