Sumário
- Entendendo Instruções Switch
- Usando Strings em Instruções Switch C#
- Sensibilidade a Maiúsculas e Minúsculas
- Expressões Switch para Melhor Legibilidade
- Conclusão
- Perguntas Frequentes
Entendendo Instruções Switch
A instrução switch
oferece uma maneira estruturada de selecionar um bloco de código para execução com base no valor de uma expressão. É uma alternativa mais eficiente a longas cadeias if-else if
quando se lida com múltiplos valores possíveis. A sintaxe básica é:
switch (expressão)
{
case valor1:
// Código a ser executado se expressão == valor1
break;
case valor2:
// Código a ser executado se expressão == valor2
break;
default:
// Código a ser executado se nenhum caso corresponder
break;
}
A instrução break
é essencial; ela impede a “queda” para casos subsequentes. Sem ela, a execução continua para o próximo caso, mesmo que o caso atual corresponda.
Usando Strings em Instruções Switch C#
Antes do C# 8, usar strings em instruções switch
exigia soluções alternativas complexas. O C# 8 introduziu a correspondência de padrões, permitindo comparações de strings diretas dentro de instruções switch
, melhorando significativamente a legibilidade e a manutenção do código.
string dia = "Segunda";
switch (dia)
{
case "Segunda":
Console.WriteLine("Começo da semana de trabalho!");
break;
case "Terça":
case "Quarta":
case "Quinta":
Console.WriteLine("Meio da semana!");
break;
case "Sexta":
Console.WriteLine("Quase fim de semana!");
break;
case "Sábado":
case "Domingo":
Console.WriteLine("Hora do fim de semana!");
break;
default:
Console.WriteLine("Dia inválido inserido.");
break;
}
Este exemplo demonstra como lidar eficientemente com vários valores de string. Observe a capacidade de agrupar vários casos sem instruções if
aninhadas.
Sensibilidade a Maiúsculas e Minúsculas
As comparações de strings em instruções switch
do C# são sensíveis a maiúsculas e minúsculas. Para comparações que não diferenciam maiúsculas e minúsculas, converta a string para minúsculas (ou maiúsculas) antes da comparação:
string dia = "segunda";
switch (dia.ToLower())
{
case "segunda":
Console.WriteLine("Começo da semana de trabalho!");
break;
// ... outros casos ...
}
Expressões Switch para Melhor Legibilidade
O C# 8 também introduziu expressões switch, oferecendo uma sintaxe mais compacta. O exemplo anterior se torna:
string dia = "Segunda";
string mensagem = dia switch
{
"Segunda" => "Começo da semana de trabalho!",
"Terça", "Quarta", "Quinta" => "Meio da semana!",
"Sexta" => "Quase fim de semana!",
"Sábado", "Domingo" => "Hora do fim de semana!",
_ => "Dia inválido inserido."
};
Console.WriteLine(mensagem);
As expressões switch são geralmente preferidas por sua concisão e melhor legibilidade, especialmente com vários casos.
Conclusão
A correspondência de padrões do C# 8 simplifica o uso de strings em instruções switch
, melhorando a legibilidade e a manutenção do código em relação às abordagens if-else if
mais antigas. Lembre-se da sensibilidade a maiúsculas e minúsculas e considere usar expressões switch para um código mais elegante.
Perguntas Frequentes
- P: Existem limitações de comprimento para strings em instruções switch? R: Não, não há limite inerente. Strings muito longas podem ter um pequeno impacto no desempenho, mas geralmente é insignificante.
- P: O que acontece se eu omitir a instrução
break
? R: Ocorre uma queda; a execução continua para o próximo caso, podendo causar comportamento inesperado. Sempre inclua instruçõesbreak
(ou use expressões switch). - P: As expressões switch são sempre mais rápidas? R: A diferença de desempenho geralmente é insignificante. Priorize a legibilidade e a manutenção; as expressões switch geralmente resultam em código mais claro.