Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Освоение оператора switch в C#: синтаксис, примеры и лучшие практики

Оператор switch в C#

Узнайте, как заменять сложные цепочки if-else на чистый, читаемый switch — с практическими примерами.

Switch упрощает принятие решений, вычисляя одно выражение и выполняя соответствующий блок case. По сравнению с длинной лестницей if-else, синтаксис switch лаконичнее и проще в поддержке.

Базовая структура:

switch (variableOrExpression) {
    case value1:
        // Код для value1
        break;
    case value2:
        // Код для value2
        break;
    // …
    default:
        // Код, если ни один case не совпал
}

При совпадении выполняется соответствующий блок до break, завершающего switch. Если совпадений нет — выполняется default, аналогично else.

Без break выполнение «проваливается» в последующие case — частая причина багов. Подробнее о break см. документацию.


Пример 1: Определение гласных

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

Ввод приводится к нижнему регистру и сравнивается с гласными. Если нет совпадения — default.

Так как все гласные делают одно действие, их можно сгруппировать:


Пример 2: Группировка case

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;
            }
        }
    }
}

Вывод тот же, но код чище.

Switch работает с ограниченным набором типов:


Пример 3: Простой калькулятор

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

Калькулятор принимает два операнда и оператор, выполняет операцию через switch. Ввод через ReadLine() и Read(); подробнее о вводе-выводе см. C# Basic Input and Output.

Хотя if-else мог бы заменить switch, последний дает более явный код и быстрее для дискретных значений.

Язык C

  1. Цепь с переключателем: практическое руководство по базовым электрическим цепям
  2. Эксперимент с коммутирующим диодом: Подавление индуктивного отбоя неоновой лампой
  3. Понимание электрических коммутаторов: типы, функции и применения
  4. Устранение дребезга контактов механических коммутаторов
  5. Мультиметры: от аналоговых к цифровым — полное руководство
  6. Оператор break в C#: как и когда использовать
  7. Оператор continue в C#: как эффективно пропускать итерации циклов
  8. Оператор pass в Python: практическое руководство
  9. Оператор switch-case в C++: синтаксис, применение и практические примеры
  10. Базовый синтаксис C: токены, идентификаторы, ключевые слова и пробелы