В тази статия ще научим за оператора за превключване в C # и как да ги използваме с примери.
Изявлението за превключване може да се използва за заместване на оператора if … else if в C #. Предимството на използването на превключване, ако … в противен случай кодовете ще изглеждат много по-изчистени и четливи с превключвателя.
Синтаксисът на оператора за превключване е:
превключвател (променлива / израз) (случай стойност1: // Изявления, изпълнени, ако израз (или променлива) = стойност1 прекъсване; случай стойност2: // Изявления, изпълнени, ако израз (или променлива) = стойност1 прекъсване; … … … … … … по подразбиране: / / Изявления, изпълнени, ако няма съвпадение на случая)
Операторът за превключване оценява израза (или променливата) и сравнява стойността му със стойностите (или израза) за всеки случай (стойност1, стойност2, …). Когато намери съответстващата стойност, изразите вътре в този случай се изпълняват.
Но ако нито един от горните случаи не съответства на израза, инструкциите вътре в default
блока се изпълняват. Операторът по подразбиране в края на превключвателя е подобен на блока else в оператора if else.
Проблем с оператора за превключване обаче е, че когато бъде намерена съответстващата стойност, той изпълнява всички изрази след него до края на блока на превключвателя.
За да избегнем това, използваме break
изявление в края на всеки случай. Операторът break спира програмата да изпълнява несъвпадащи изрази чрез прекратяване на изпълнението на оператор switch.
За да научите повече за изявлението за почивка, посетете C # break statement.
Пример 1: Изявление за превключвател 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; ) ) ) )
Когато стартираме програмата, изходът ще бъде:
Въведете азбука X Не гласна
В този пример потребителят е подканен да въведе азбука. Азбуката се преобразува в малка буква с помощта на ToLower()
метод, ако е с главни букви.
След това операторът за превключване проверява дали азбуката, въведена от потребителя, е някоя от a, e, i, o or u
.
Ако един от случаите съвпада, Vowel
се отпечатва, в противен случай контролата отива към блока по подразбиране и Not a vowel
се отпечатва като изход.
Тъй като изходът за всички гласни е еднакъв, можем да обединим случаите като:
Пример 2: Изявление на превключвател 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': case 'e': case 'i': case 'o': case 'u': Console.WriteLine("Vowel"); break; default: Console.WriteLine("Not a vowel"); break; ) ) ) )
Резултатът от двете програми е еднакъв. В горната програма всички гласни отпечатват изхода Vowel
и прекъсванията от превключвателя.
Въпреки че операторът switch прави кода по-чист, отколкото ако… иначе ако операторът, switch е ограничен за работа с ограничени типове данни. Изявлението за превключване в C # работи само с:
- Примитивни типове данни: bool, char и интегрален тип
- Изброени типове (Enum)
- Струнен клас
- Типове типове данни с горни стойности
Пример 3: Проста програма за калкулатор, използваща C # Switch Statement
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; ) ) ) )
Когато стартираме програмата, изходът ще бъде:
Въведете първо число: -13.11 Въведете второ число: 2.41 Въведете оператор (+, -, *, /): * -13.11 * 2.41 = -31.5951
Горната програма приема два операнда и оператор като вход от потребителя и извършва операцията въз основа на оператора.
Входовете се вземат от потребителя, използвайки метода ReadLine()
и Read()
. За да научите повече, посетете C # Basic Input and Output.
Програмата използва декларация за случай на превключване за вземане на решение. Като алтернатива можем да използваме if-else if стълба, за да извършим същата операция.