Оператор переключения C#
Выражение переключения C#
В этой статье мы узнаем об операторе switch в C# и о том, как его использовать с примерами.
Оператор Switch можно использовать для замены оператора if...else if в C#. Преимущество использования оператора switch вместо оператора if...else if заключается в том, что коды будут выглядеть намного чище и читабельнее с помощью оператора switch.
Синтаксис оператора 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 }
Оператор switch оценивает выражение (или переменная ) и сравните его значение со значениями (или выражением) каждого случая (value1 , значение2 , …). Когда он находит совпадающее значение, выполняются операторы внутри этого случая.
Но если ни один из приведенных выше случаев не соответствует выражению, операторы внутри default
блок выполняется. Оператор по умолчанию в конце оператора switch аналогичен блоку else в операторе if else.
Однако проблема с оператором switch заключается в том, что когда найдено соответствующее значение, он выполняет все операторы после него до конца блока switch.
Чтобы избежать этого, мы используем break
заявление в конце каждого дела. Оператор break останавливает выполнение программой несовпадающих операторов, прерывая выполнение оператора switch.
Чтобы узнать больше об операторе break, посетите страницу оператор break в C#. .
<час>Пример 1. Оператор 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;
}
}
}
}
Когда мы запустим программу, вывод будет таким:
Enter an alphabet X Not a vowel
В этом примере пользователю предлагается ввести алфавит. Алфавит преобразуется в нижний регистр с помощью ToLower()
метод, если он указан в верхнем регистре.
Затем оператор switch проверяет, является ли алфавит, введенный пользователем, одним из a, e, i, o or u
.
Если один из регистров совпадает, Vowel
печатается, в противном случае элемент управления переходит в блок по умолчанию и Not a vowel
печатается как вывод.
Поскольку вывод для всех гласных одинаков, мы можем соединить случаи следующим образом:
<час>Пример 2. Оператор C# switch со сгруппированными вариантами
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;
}
}
}
}
Вывод обеих программ одинаковый. В приведенной выше программе все гласные выводят результат Vowel
и прерывает оператор switch.
Хотя оператор switch делает код более чистым, чем оператор if...else if, переключатель ограничен работой с ограниченными типами данных. Оператор Switch в C# работает только с:
- Примитивные типы данных:bool, char и integer.
- Перечисленные типы (Enum)
- Класс строк
- Типы вышеуказанных типов данных, допускающие значение NULL
Пример 3. Простой калькулятор с оператором 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;
}
}
}
}
Когда мы запустим программу, вывод будет таким:
Enter first number: -13.11 Enter second number: 2.41 Enter operator (+, -, *, /): * -13.11 * 2.41 = -31.5951
Приведенная выше программа принимает два операнда и оператор в качестве входных данных от пользователя и выполняет операцию на основе оператора.
Входные данные берутся у пользователя с помощью ReadLine()
и Read()
метод. Дополнительные сведения см. на странице Базовый ввод и вывод C#.
Программа использует оператор switch case для принятия решения. В качестве альтернативы мы можем использовать лестницу if-else if для выполнения той же операции.
Язык C