C# Programming

Dominando Comparações de Strings em Switch Statements C#

Spread the love

Sumário

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ções break (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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *