Чтение онлайн

на главную

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

case "VB":

Console.WriteLine("VB: OOP, multithreading and more!");

break;

default:

Console.WriteLine("Well...good luck with that!");

break;

}

}

Оператор

switch
также может применяться с перечислимым типом данных. Как будет показано в главе 4, ключевое слово
enum
языка C# позволяет определять специальный набор пар "имя-значение". В качестве иллюстрации рассмотрим
вспомогательный метод
SwitchOnEnumExample
, который выполняет проверку
switch
для перечисления
System.DayOfWeek
. Пример содержит ряд синтаксических конструкций, которые пока еще не рассматривались, но сосредоточьте внимание на самом использовании
switch
с типом
enum
; недостающие фрагменты будут прояснены в последующих главах.

static void SwitchOnEnumExample

{

Console.Write("Enter your favorite day of the week: ");

// Введите любимый день недели:

DayOfWeek favDay;

try

{

favDay = (DayOfWeek) Enum.Parse(typeof(DayOfWeek), Console.ReadLine);

}

catch (Exception)

{

Console.WriteLine("Bad input!");

// Недопустимое входное значение!

return;

}

switch (favDay)

{

case DayOfWeek.Sunday:

Console.WriteLine("Football!!");

// Футбол! !

break;

case DayOfWeek.Monday:

Console.WriteLine("Another day, another dollar");

// Еще один день, еще один доллар.

break;

case DayOfWeek.Tuesday:

Console.WriteLine("At least it is not Monday");

// Во всяком случае, не понедельник.

break;

case DayOfWeek.Wednesday:

Console.WriteLine("A fine day.");

// Хороший денек.

break;

case DayOfWeek.Thursday:

Console.WriteLine("Almost Friday...");

// Почти пятница...

break;

case DayOfWeek.Friday:

Console.WriteLine("Yes, Friday rules!");

// Да, пятница рулит!

break;

case DayOfWeek.Saturday:

Console.WriteLine("Great day indeed.");

// Действительно великолепный день.

break;

}

Console.WriteLine;

}

Сквозной проход от одного оператора

case
к другому оператору
case
не разрешен, но что, если множество операторов
case
должны вырабатывать тот же самый результат? К счастью, их можно комбинировать, как демонстрируется ниже:

case DayOfWeek.Saturday:

case DayOfWeek.Sunday:

Console.WriteLine("It’s the weekend!");

break;

Помещение любого кода между операторами

case
приведет к тому, что компилятор сообщит об ошибке. До тех пор, пока операторы case следуют друг за другом, как показано выше, их можно комбинировать для разделения общего кода.

В дополнение к операторам

return
и
break
, показанным в предшествующих примерах кода, оператор
switch
также поддерживает применение
goto
для выхода из условия
case
и выполнения другого оператора
case
. Несмотря на наличие поддержки, данный прием почти повсеместно считается антипаттерном и в общем случае не рекомендуется. Ниже приведен пример использования оператора
goto
в блоке
switch
:

static void SwitchWithGoto

{

var foo = 5;

switch (foo)

{

case 1:

// Делать что-то

goto case 2;

case 2:

// Делать что-то другое

break;

case 3:

// Еще одно действие

goto default;

default:

// Стандартное действие

break;

}

}

Выполнение сопоставления с образцом в операторах switch (нововведение в версии 7.0, обновление в версии 9.0)

До выхода версии C# 7 сопоставляющие выражения в операторах

switch
ограничивались сравнением переменной с константными значениями, что иногда называют образцом с константами. В C# 7 операторы
switch
способны также задействовать образец с типами, при котором операторы
case
могут оценивать тип проверяемой переменной, и выражения
case
больше не ограничиваются константными значениями. Правило относительно того, что каждый оператор
case
должен завершаться с помощью
return
или
break
, по-прежнему остается в силе; тем не менее, операторы
goto
не поддерживают применение образца с типами.

На заметку! Если вы новичок в объектно-ориентированном программировании, тогда материал этого раздела может слегка сбивать с толку. Все прояснится в главе 6, когда мы вернемся к новым средствам сопоставления с образцом C# 7 в контексте базовых и производных классов. Пока вполне достаточно понимать, что появился мощный новый способ написания операторов

switch
.

Добавьте еще один метод по имени

ExecutePatternMatchingSwitch
со следующим кодом:

Поделиться:
Популярные книги

Изгой. Трилогия

Михайлов Дем Алексеевич
Изгой
Фантастика:
фэнтези
8.45
рейтинг книги
Изгой. Трилогия

Старатель 2

Лей Влад
2. Старатели
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Старатель 2

Купеческая дочь замуж не желает

Шах Ольга
Фантастика:
фэнтези
6.89
рейтинг книги
Купеческая дочь замуж не желает

Кодекс Охотника. Книга IX

Винокуров Юрий
9. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга IX

Школа Семи Камней

Жгулёв Пётр Николаевич
10. Real-Rpg
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Школа Семи Камней

Тайны ордена

Каменистый Артем
6. Девятый
Фантастика:
боевая фантастика
попаданцы
7.48
рейтинг книги
Тайны ордена

Убивать чтобы жить 9

Бор Жорж
9. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 9

Мимик нового Мира 11

Северный Лис
10. Мимик!
Фантастика:
юмористическое фэнтези
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 11

Пришествие бога смерти. Том 5

Дорничев Дмитрий
5. Ленивое божество
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Пришествие бога смерти. Том 5

Аномальный наследник. Том 3

Тарс Элиан
2. Аномальный наследник
Фантастика:
фэнтези
7.74
рейтинг книги
Аномальный наследник. Том 3

Опер. Девочка на спор

Бигси Анна
5. Опасная работа
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Опер. Девочка на спор

Имя нам Легион. Том 4

Дорничев Дмитрий
4. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 4

Приручитель женщин-монстров. Том 8

Дорничев Дмитрий
8. Покемоны? Какие покемоны?
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Приручитель женщин-монстров. Том 8

Личник

Валериев Игорь
3. Ермак
Фантастика:
альтернативная история
6.33
рейтинг книги
Личник