Elementor Header #8

53. Конструкция Switch

53. Конструкция switch в C#

1. Введение

switch — это управляющая конструкция, которая позволяет выбрать один из нескольких вариантов выполнения кода в зависимости от значения выражения. Она удобна, когда есть несколько условий, которые зависят от одного значения.


2. Синтаксис

				
					switch (выражение)
{
    case значение1:
        // Код для первого случая
        break;
    case значение2:
        // Код для второго случая
        break;
    default:
        // Код по умолчанию, если не совпало ни одно значение
        break;
}

				
			
  • выражение — переменная или значение, которое сравнивается с case.
  • case — возможные значения.
  • break — завершает выполнение switch, чтобы не выполнялись следующие case.
  • default — выполняется, если ни одно значение не совпало.

3. Примеры использования

Пример 1: Определение дня недели

				
					int day = 3;

switch (day)
{
    case 1:
        Console.WriteLine("Понедельник");
        break;
    case 2:
        Console.WriteLine("Вторник");
        break;
    case 3:
        Console.WriteLine("Среда");
        break;
    case 4:
        Console.WriteLine("Четверг");
        break;
    case 5:
        Console.WriteLine("Пятница");
        break;
    case 6:
    case 7:
        Console.WriteLine("Выходной!");
        break;
    default:
        Console.WriteLine("Некорректный номер дня");
        break;
}

				
			
Вывод:
				
					Среда

				
			
  • Если day == 3, программа выведет "Среда".
  • case 6: и case 7: объединены, так как оба означают выходной.

Пример 2: Калькулятор (арифметические операции)

				
					char operation = '+';
int a = 5, b = 3;
int result;

switch (operation)
{
    case '+':
        result = a + b;
        break;
    case '-':
        result = a - b;
        break;
    case '*':
        result = a * b;
        break;
    case '/':
        result = (b != 0) ? a / b : 0;
        break;
    default:
        Console.WriteLine("Неизвестная операция");
        return;
}

Console.WriteLine($"Результат: {result}");

				
			

Если operation = '+', программа выполнит a + b и выведет:

				
					Результат: 8

				
			

4. switch с string (пример с меню)

				
					string command = "start";

switch (command)
{
    case "start":
        Console.WriteLine("Запуск программы...");
        break;
    case "stop":
        Console.WriteLine("Остановка программы.");
        break;
    default:
        Console.WriteLine("Неизвестная команда.");
        break;
}

				
			

Если command == "start", программа напечатает:

				
					Запуск программы...

				
			

5. switch без break (падение вниз)

Если не использовать break, выполнение продолжится в следующем case.

				
					int number = 2;

switch (number)
{
    case 1:
        Console.WriteLine("Один");
    case 2:
        Console.WriteLine("Два");
    case 3:
        Console.WriteLine("Три");
    default:
        Console.WriteLine("Конец");
}

				
			

Вывод:

				
					Два
Три
Конец

				
			

❗ Без break выполнение продолжается до конца switch.


6. Использование switch с return (без break)

				
					string GetDayName(int day)
{
    return day switch
    {
        1 => "Понедельник",
        2 => "Вторник",
        3 => "Среда",
        4 => "Четверг",
        5 => "Пятница",
        6 or 7 => "Выходной",
        _ => "Некорректный день"
    };
}

Console.WriteLine(GetDayName(5)); // Пятница

				
			

Заключение

  • switch удобен для работы с фиксированными значениями.
  • В C# 8+ можно использовать switch-выражения.
  • break обязателен в классическом switch, но не нужен в switch-выражениях.
  • Используйте switch, если if-else становится громоздким.

Используйте switch для удобства и читаемости кода! 🚀

Тестовое задание

Напишите программу, которая запрашивает у пользователя число от 1 до 4 и выводит соответствующее время года:

  • 1"Зима"
  • 2"Весна"
  • 3"Лето"
  • 4"Осень"
  • Для других чисел — "Некорректное значение"

Пример кода:

				
					using System;

class Program
{
    static void Main()
    {
        Console.Write("Введите число (1-4): ");
        int season = Convert.ToInt32(Console.ReadLine());

        string result = season switch
        {
            1 => "Зима",
            2 => "Весна",
            3 => "Лето",
            4 => "Осень",
            _ => "Некорректное значение"
        };

        Console.WriteLine(result);
    }
}

				
			

Попробуйте написать и запустить этот код, чтобы убедиться в правильности выполнения операций и особенностях работы с числами с плавающей точкой.

logo