English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Sentença Switch do C#

Quando você precisa testar três ou mais condições em uma variável, pode usar a instrução switch em vez da instrução if else. Aqui, você vai aprender sobre a instrução switch e como usá-la de forma eficaz em programas C#.

Aqui está a sintaxe geral da instrução switch.

 Sintaxe:}

switch(expressão/variável)
{
    case constante-value:
        //instrução a ser executada;
        break;
    padrão: 
        //instrução a ser executada;
        break;
}

A estrutura switch começa com a palavra-chave switch, que contém uma expressão de correspondência ou uma variável dentro de parênteses switch(expressão de correspondência match expression). O resultado dessa expressão ou variável será testado contra as condições case especificadas dentro dos chavetes {}./O valor da variável é igual, execute o caso. A estrutura switch também pode conter um rótulo default opcional. Se nenhum caso for executado, o rótulo default será executado. As palavras-chave break, return ou goto são usadas para sair das condições switch.

O seguinte exemplo demonstra uma estrutura switch simples.

int x = 10;
switch (x
{ 
    caso 5:
        Console.WriteLine("O valor de x é5");
        break;
    caso 10:
        Console.WriteLine("O valor de x é10");
        break;
    caso 15:
        Console.WriteLine("O valor de x é15");
        break;
    padrão:
        Console.WriteLine("Valor desconhecido");
        break;
}
Saída:
O valor de x é10

Acima, a estrutura switch (x) contém uma variável x whose value will be compared with each case o valor do valor5、10e15três situações. Ele também contém o rótulo default, se nenhum valor de caso correspondente ao switch variável/Expressão correspondente, será executado o rótulo. Cada caso começa após : e contém uma instrução a ser executada. O valor de X coincide com o valor do segundo caso10: Correspondência, portanto, o valor de saída é o valor de x10.

A estrutura switch pode conter qualquer expressão não nula que retorne um tipo de valor char, string, bool, int ou enum.

A estrutura switch pode conter uma expressão, cujo resultado será testado para cada caso durante a execução.

int x = 125;
switch (x % 2)
{ 
    case 0:
        Console.WriteLine($"{x} é par");
        break;
    caso 1:
        Console.WriteLine($"{x} é ímpar");
        break;
}
Saída:
125é ímpar

Caso switch

Os casos switch devem ser valores constantes únicos. Eles podem ser bool, char, string, inteiro, enum ou tipos correspondentes que podem ser null.

Atenção

Em C# 7Após .0, o caso switch pode conter valores não únicos. Neste caso, será executado o primeiro caso correspondente.

Considere o seguinte exemplo simples de estrutura switch.

string statementType = "switch";
switch (statementType)
{
    case "if.else":
        Console.WriteLine("instrução if...else");
        break;
    case "ternary":
        Console.WriteLine("Operador ternário");
        break;
    case "switch":
        Console.WriteLine("instrução switch");
        break;
}
Saída:
instrução switch

É possível combinar vários cases para executar a mesma instrução.

int x = 5;
switch (x
{ 
    caso 1:
        Console.WriteLine("x = ", 1");
        break;
    caso 2:
        Console.WriteLine("x = ", 2");
        break;
    caso 4:
    caso 5:
        Console.WriteLine("x = ", 4 ou x = 5");
        break;
    padrão:
        Console.WriteLine("x > ", 5");
        break;
}

Cada caso deve sair explicitamente usando break, return, goto ou outra forma, garantindo que o controle do programa saia de um caso e não entre no caso padrão.

A seguir, o uso da palavra-chave return.

void Main(string[] args)
{
    int x = 125;
    Console.Write( estáImpar(x)? "Valor par" : "Valor ímpar");
}
bool estáImpar(int i, int j)
{
    switch (x % 2)
    { 
        case 0:
            return true;
        caso 1:
            return false;
        padrão:
            return false;
    }
    
    return false;
}
Saída:
Valor ímpar

A ausência de instruções break, return ou goto, ou casos de switch com valores constantes iguais, gerará um erro de compilação.

int x = 1;
switch (x
{ 
    case 0:
        Console.WriteLine($"{x} é um valor par");
        break;
    caso 1:
        Console.WriteLine($"{x} é um valor ímpar");
        break;
    caso 1: // Erro-O controle não pode sair de um rótulo case(" case 1:)ir para outro rótulo case
        Console.WriteLine($"{x} é um valor ímpar");
    padrão:
        Console.WriteLine($"{x} é um valor ímpar");
        break;
}

Estrutura switch aninhada

Uma estrutura switch pode ser usada dentro de outra estrutura switch.

int j = 5;
switch (j
{
    caso 5:
        Console.WriteLine(5);
        switch (j - 1)
        {
            caso 4:
            Console.WriteLine(4);
            switch (j - 2)
            {
                caso 3:
                Console.WriteLine(3);
                break;
            }
            break;
        }
        break;
    caso 10:
        Console.WriteLine(10);
        break;
    caso 15:
        Console.WriteLine(15);
        break;
    padrão:
        Console.WriteLine(100);
        break;
}
Saída:
5 
4 
3
 Ponto-chave a ser lembrado:
  1. A sentença switch é uma substituição para a sentença if else.

  2. A sentença switch testa a expressão de correspondência de um conjunto de constantes especificadas para case./Variável.

  3. Para sair do case, a sentença switch deve conter as palavras-chave break, return ou goto.

  4. O switch pode conter um rótulo opcional default, que será executado quando nenhum case for executado.

  5. O compilador do C# fornecerá erros sobre a falta de :, valores constantes e sairá do case.

  6. Do C#7A partir de .0, a condição do switch pode conter valores não únicos. Neste caso, será executada a primeira situação correspondente.