Instrução C# switch
Instrução do switch C#
Neste artigo, aprenderemos sobre a instrução switch em C# e como usá-la com exemplos.
A instrução switch pode ser usada para substituir a instrução if...else if em C#. A vantagem de usar switch over if...else if é que os códigos parecerão muito mais limpos e legíveis com switch.
A sintaxe da instrução switch é:
switch (variable/expression) { case value1: // Statements executed if expression(or variable) = value1 break; case value2: // Statements executed if expression(or variable) = value1 break; ... ... ... ... ... ... default: // Statements executed if no case matches }
A instrução switch avalia a expressão (ou variável ) e compare seu valor com os valores (ou expressão) de cada caso (valor1 , valor2 , …). Quando encontra o valor correspondente, as instruções dentro desse caso são executadas.
Mas, se nenhum dos casos acima corresponder à expressão, as instruções dentro de
default
bloco é executado. A instrução padrão no final do switch é semelhante ao bloco else na instrução if else. No entanto, um problema com a instrução switch é que, quando o valor correspondente é encontrado, ela executa todas as instruções após ele até o final do bloco switch.
Para evitar isso, usamos
break
declaração ao final de cada caso. A instrução break impede que o programa execute instruções não correspondentes ao encerrar a execução da instrução switch. Para saber mais sobre a instrução break, visite instrução break C# .
Exemplo 1:instrução switch C#
using System;
namespace Conditional
{
class SwitchCase
{
public static void Main(string[] args)
{
char ch;
Console.WriteLine("Enter an alphabet");
ch = Convert.ToChar(Console.ReadLine());
switch(Char.ToLower(ch))
{
case 'a':
Console.WriteLine("Vowel");
break;
case 'e':
Console.WriteLine("Vowel");
break;
case 'i':
Console.WriteLine("Vowel");
break;
case 'o':
Console.WriteLine("Vowel");
break;
case 'u':
Console.WriteLine("Vowel");
break;
default:
Console.WriteLine("Not a vowel");
break;
}
}
}
}
Ao executarmos o programa, a saída será:
Enter an alphabet X Not a vowel
Neste exemplo, o usuário é solicitado a inserir um alfabeto. O alfabeto é convertido em minúsculas usando
ToLower()
método se estiver em maiúsculas. Em seguida, a instrução switch verifica se o alfabeto digitado pelo usuário é algum de
a, e, i, o or u
. Se uma das maiúsculas e minúsculas corresponder,
Vowel
é impresso caso contrário o controle vai para o bloco padrão e Not a vowel
é impresso como saída. Como a saída para todas as vogais é a mesma, podemos juntar os casos como:
Exemplo 2:instrução switch C# com casos agrupados
using System;
namespace Conditional
{
class SwitchCase
{
public static void Main(string[] args)
{
char ch;
Console.WriteLine("Enter an alphabet");
ch = Convert.ToChar(Console.ReadLine());
switch(Char.ToLower(ch))
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
Console.WriteLine("Vowel");
break;
default:
Console.WriteLine("Not a vowel");
break;
}
}
}
}
A saída de ambos os programas é a mesma. No programa acima, todas as vogais imprimem a saída
Vowel
e quebra da instrução switch. Embora a instrução switch faça o código parecer mais limpo do que a instrução if...else if, o switch está restrito a trabalhar com tipos de dados limitados. A instrução Switch em C# só funciona com:
- Tipos de dados primitivos:bool, char e tipo integral
- Tipos enumerados (Enum)
- Classe de string
- Tipos anuláveis dos tipos de dados acima
Exemplo 3:Programa de calculadora simples usando a instrução switch C#
using System;
namespace Conditional
{
class SwitchCase
{
public static void Main(string[] args)
{
char op;
double first, second, result;
Console.Write("Enter first number: ");
first = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter second number: ");
second = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter operator (+, -, *, /): ");
op = (char)Console.Read();
switch(op)
{
case '+':
result = first + second;
Console.WriteLine("{0} + {1} = {2}", first, second, result);
break;
case '-':
result = first - second;
Console.WriteLine("{0} - {1} = {2}", first, second, result);
break;
case '*':
result = first * second;
Console.WriteLine("{0} * {1} = {2}", first, second, result);
break;
case '/':
result = first / second;
Console.WriteLine("{0} / {1} = {2}", first, second, result);
break;
default:
Console.WriteLine("Invalid Operator");
break;
}
}
}
}
Ao executarmos o programa, a saída será:
Enter first number: -13.11 Enter second number: 2.41 Enter operator (+, -, *, /): * -13.11 * 2.41 = -31.5951
O programa acima recebe dois operandos e um operador como entrada do usuário e executa a operação com base no operador.
As entradas são obtidas do usuário usando o
ReadLine()
e Read()
método. Para saber mais, visite C# Basic Input and Output. O programa usa a instrução switch case para tomada de decisão. Alternativamente, podemos usar if-else if escada para realizar a mesma operação.
Linguagem C