Exercício - Implementar uma declaração switch
- 11 minutos
Uma instrução switch é uma seleção C# que oferece uma alternativa a uma construção de ramificação if-elseif-else. A switch instrução fornece vantagens sobre uma if-elseif-else construção ao avaliar um único valor em relação a uma lista de valores correspondentes conhecidos.
Considere o seguinte cenário:
- Está a trabalhar numa aplicação relacionada com nutrição alimentar. Uma secção do código trata das frutas.
- Seu código inclui uma variável chamada
fruitque é usada para manter o nome de diferentes tipos de frutas. - Você tem uma lista dos 20 frutos em que sua aplicação está focada.
- Você deseja ramificar seu código com base no valor atribuído a
fruit.
Nesse cenário, você pode usar uma switch instrução para criar uma ramificação separada para cada tipo de fruta.
Como funciona uma declaração switch?
A instrução switch seleciona uma seção de código para executar a partir de uma lista de seções de switch possíveis. A seção de switch selecionada é escolhida com base numa correspondência de padrão com a expressão de correspondência da instrução.
Considere o seguinte exemplo de código que mostra a estrutura básica da switch instrução:
switch (fruit)
{
case "apple":
Console.WriteLine($"App will display information for apple.");
break;
case "banana":
Console.WriteLine($"App will display information for banana.");
break;
case "cherry":
Console.WriteLine($"App will display information for cherry.");
break;
}
A expressão de correspondência (que também pode ser referida como a expressão switch) é o valor que segue a switch palavra-chave, que neste caso é (fruit). Cada seção do switch é definida por um padrão de caso. Os padrões de casos são construídos usando a palavra-chave case seguida de um valor. O primeiro padrão de caso neste exemplo é: case "apple":. Padrões de caso são expressões booleanas que avaliam para um de dois valores: true ou false. Cada bloco switch inclui um pequeno número de linhas de código que serão executadas se o padrão de caso for uma correspondência para a expressão a ser avaliada. Neste exemplo, se fruit for atribuído um valor de "apple", o primeiro padrão de caso será avaliado como true e essa seção de switch será executada.
Uma instrução switch deve incluir pelo menos uma seção switch, mas normalmente conterá três ou mais seções switch.
O interruptor é melhor utilizado quando:
- Você tem um único valor (variável ou expressão) que deseja corresponder a muitos valores possíveis.
- Para qualquer jogo, é necessário executar no máximo algumas linhas de código.
Observação
Este primeiro exemplo de uma switch afirmação é propositadamente simples e o seu exame da sintaxe foi breve. Você analisará funcionalidades adicionais da instrução switch ao trabalhar em cenários mais avançados nas seções a seguir.
É hora de preparar seu ambiente de codificação e começar a desenvolver suas próprias switch declarações.
Prepare seu ambiente de codificação
Este módulo inclui atividades práticas que o guiam através do processo de criação e execução de código de demonstração. Recomendamos que você conclua essas atividades usando o Visual Studio Code como seu ambiente de desenvolvimento. Usar o Visual Studio Code para essas atividades ajudará você a se sentir mais confortável escrevendo e executando código em um ambiente de desenvolvedor usado por profissionais em todo o mundo.
Abra o Visual Studio Code.
Você pode usar o menu Iniciar do Windows (ou recurso equivalente para outro sistema operacional) para abrir o Visual Studio Code.
No menu Arquivo de código do Visual Studio, selecione Abrir pasta.
Na caixa de diálogo Abrir pasta , navegue até a pasta Área de trabalho do Windows.
Se você tiver um local de pasta diferente onde você mantém projetos de código, você pode usar esse local de pasta em vez disso. Para este treinamento, o importante é ter um local que seja fácil de localizar e lembrar.
Na caixa de diálogo Abrir pasta , selecione Selecionar pasta.
Se vir uma caixa de diálogo de segurança a perguntar se confia nos autores, selecione Sim.
No menu Terminal de código do Visual Studio, selecione Novo terminal.
Observe que um prompt de comando no painel Terminal exibe o caminho da pasta atual. Por exemplo:
C:\Users\someuser\Desktop>Observação
Se você estiver trabalhando em seu próprio PC em vez de em uma área restrita ou ambiente hospedado e tiver concluído outros módulos do Microsoft Learn nesta série C#, talvez já tenha criado uma pasta de projeto para exemplos de código. Se esse for o caso, você pode pular a próxima etapa, que é usada para criar um aplicativo de console na pasta TestProject.
No prompt de comando do Terminal, para criar um novo aplicativo de console em uma pasta especificada, digite o seguinte prompt:
dotnet new console -o ./CsharpProjects/TestProjectEste comando .NET CLI usa um modelo de programa .NET para criar um novo projeto de aplicativo de console C# no local da pasta especificada. O comando cria as pastas CsharpProjects e TestProject para você e usa TestProject como o nome do seu
.csprojarquivo.Se for exibida uma mensagem informando que os arquivos já existem, continue com as próximas etapas. Você reutilizará os arquivos de projeto existentes.
Na visualização EXPLORER, expanda a pasta CsharpProjects .
Você deve ver a pasta TestProject e dois arquivos, um arquivo de programa C# chamado Program.cs e um arquivo de projeto C# chamado TestProject.csproj.
No menu Arquivo de código do Visual Studio, selecione Abrir pasta.
Na caixa de diálogo Abrir pasta , selecione a pasta CsharpProjects e, em seguida, selecione Selecionar pasta.
No modo de exibição EXPLORER, expanda a pasta TestProject e selecione Program.cs.
Exclua as linhas de código existentes.
Você usará este projeto de console C# para criar, compilar e executar exemplos de código durante este módulo.
Feche o painel Terminal.
Criar e testar uma declaração switch
Verifique se você tem o Visual Studio Code aberto e Program.cs exibido no painel Editor.
Observação
Program.cs deve estar vazio. Se não estiver, selecione e exclua todas as linhas de código.
Digite o seguinte código no Editor de Códigos do Visual Studio:
int employeeLevel = 200; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: title = "Junior Associate"; break; case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");No menu Arquivo do Visual Studio Code, selecione Guardar.
O arquivo Program.cs deve ser salvo antes de criar ou executar o código.
No painel EXPLORER, para abrir um Terminal no local da pasta TestProject, clique com o botão direito do mouse em TestProject e selecione Abrir no Terminal Integrado.
Um painel Terminal será aberto. O Terminal deve incluir um prompt de comando indicando que o Terminal está aberto no local da pasta TestProject.
No prompt de comando do Terminal, para executar o código, digite dotnet run e pressione Enter.
Observação
Se você vir uma mensagem dizendo "Não foi possível encontrar um projeto para executar", verifique se o prompt de comando do Terminal exibe o local esperado da pasta TestProject. Por exemplo:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Deverá ver o seguinte resultado:
John Smith, Senior AssociateReserve um minuto para rever a
switchdeclaração que introduziu.Observe que a
switchinstrução define um único bloco de código.A
switchinstrução define um único bloco de código que inclui uma lista de seções de switch. À direita daswitchpalavra-chave está uma expressão switch entre parênteses.Observe a lista de seções de switch dentro do bloco de código.
O
switchbloco de código contém uma lista de seções de switch, cada uma das quais inclui um ou mais rótulos de switch. Além disso, cada seção switch inclui uma lista de instruções que será executada se o rótulo for igual à expressão switch definida no início da instrução switch.A expressão switch é avaliada em relação aos rótulos do caso de cima para baixo até que um valor igual à expressão switch seja encontrado. Se nenhum dos rótulos corresponder, será executada a lista de instruções para o caso
default. Se nenhum valor padrão for incluído, o controlo será transferido para o ponto final da instrução switch. Cada rótulo deve fornecer um tipo de valor que corresponda ao tipo especificado na expressão de comutação.Observação
O rótulo opcional
defaultpode aparecer em qualquer posição dentro da lista de seções de interruptores. No entanto, a maioria dos desenvolvedores opta por colocá-lo por último porque faz mais sentido (logicamente) posicionardefaultcomo a opção final. Independentemente da posição, adefaultseção será avaliada em último lugar.No nosso exemplo:
- A expressão do switch é
(employeeLevel) - Cada secção do interruptor tem uma única etiqueta de comutação (
caseoudefault). - A secção do interruptor correspondente é definida por
case: 200, uma vez queemployeeLevel = 200.
- A expressão do switch é
Observe que cada seção do switch é separada da próxima.
Apenas uma seção de switch pode ser executada. Isso significa que a execução de uma seção de switch não pode passar para a próxima seção de switch. A
breakpalavra-chave é uma das várias maneiras de encerrar uma seção de switch antes que ela chegue à próxima seção. Caso se esqueça da palavra-chavebreak(ou, opcionalmente, a palavra-chavereturn), o compilador irá gerar um erro.
Altere o valor da variável de nível para ver como a instrução switch a avalia
Para exercer o caso padrão, vamos alterar o nível do funcionário modificando a atribuição de valor.
Para modificar o valor atribuído ao
employeeLevel, atualize o código da seguinte maneira:int employeeLevel = 201;Salve seu arquivo de código e, em seguida, use o Visual Studio Code para executar seu código.
Digite
dotnet runno prompt de comando do Terminal para executar o seu código.Observe que a saída foi alterada.
Agora, quando você executa o código, você deve ver o título mais genérico usado.
John Smith, AssociateUma vez que o
employeeLevelnão corresponde a nenhum rótulo, o rótulodefaultcorresponde.
Modificar uma seção de switch para incluir vários rótulos
Suponhamos que nossa empresa decidiu dar a todos os funcionários de nível 100 o título de "Associado Sênior" - o mesmo título que os funcionários de nível 200. Como desenvolvedor, você decide implementar isso removendo a primeira seção de switch pertencente ao rótulo case 100:e, em vez disso, permite que ambos os case 100: rótulos e case 200: executem a mesma seção de switch.
Para modificar o valor atribuído ao
employeeLevel, atualize o código da seguinte maneira:int employeeLevel = 100;Para atribuir vários rótulos à primeira seção de opção, atualize seu código da seguinte maneira:
case 100: case 200: title = "Senior Associate"; break;Quando terminar de fazer alterações, as modificações deverão corresponder ao seguinte código:
int employeeLevel = 100; string employeeName = "John Smith"; string title = ""; switch (employeeLevel) { case 100: case 200: title = "Senior Associate"; break; case 300: title = "Manager"; break; case 400: title = "Senior Manager"; break; default: title = "Associate"; break; } Console.WriteLine($"{employeeName}, {title}");Salve seu arquivo de código e, em seguida, use o Visual Studio Code para executar seu código.
Digite
dotnet runno prompt de comando do Terminal para executar o seu código.Deverá ver o seguinte resultado:
John Smith, Senior AssociateAmbos os rótulos
100de caso estão agora emparelhados com a seção switch que define o título para o valor de cadeia de caracteres200.
Recapitulação
Aqui estão as principais conclusões que aprendeste sobre a declaração switch:
- Utilize a instrução
switchquando tiver um valor com muitas correspondências possíveis, cada correspondência necessitando de um ramo na sua lógica de código. - Uma única secção de switch contendo lógica de código pode corresponder a um ou mais rótulos definidos pela palavra-chave
case. - Use a palavra-chave opcional
defaultpara criar um rótulo e uma seção de escolha que serão usados quando nenhum outro rótulo de caso corresponder.