Разбор вариантов перечисления в C#
Конструкция switch принимает переменную
типа enum и сравнивает ее с константами
в метках case. В C# непустая ветка должна
явно завершаться, например через return
или break.
Скомпилировать «провал» в следующий case
с кодом нельзя - компилятор это запрещает.
В примерах ниже каждая ветка сразу возвращает результат
через return, поэтому break не нужен:
выход идёт из всей функции. Пустые метки case
подряд допустимы - тогда несколько констант ведут
к одному общему блоку с кодом.
В case пишут полное имя константы, как
Color.Red. Запишем функцию, которая по дню
недели возвращает короткую метку, и выведем результат
для пятницы:
string Label(Day day) {
switch (day) {
case Day.Monday:
return "start";
case Day.Tuesday:
return "mid";
case Day.Wednesday:
return "mid";
case Day.Thursday:
return "mid";
case Day.Friday:
return "end";
case Day.Saturday:
return "rest";
case Day.Sunday:
return "rest";
}
return "";
}
Console.WriteLine(Label(Day.Friday));
enum Day {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
Несколько констант можно обработать одной веткой, если
перечислить их через запятую в одной метке case.
Запишем проверку выходного дня и выведем ответ для
воскресенья:
bool IsWeekend(Day day) {
switch (day) {
case Day.Saturday:
case Day.Sunday:
return true;
case Day.Monday:
case Day.Tuesday:
case Day.Wednesday:
case Day.Thursday:
case Day.Friday:
return false;
}
return false;
}
Console.WriteLine(IsWeekend(Day.Sunday));
enum Day {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
}
Объявите enum Season с константами
Spring, Summer, Autumn
и Winter.
Напишите функцию IsWarm с параметром
Season: для Summer и Spring
верните true, для остальных - false.
Вызовите с Season.Winter и выведите результат.
Объявите enum Weekday с семью днями
недели.
Напишите функцию IsWeekend с параметром
Weekday: для Saturday и Sunday
верните true, для остальных дней - false.
Выведите результат для Weekday.Saturday.
Объявите enum Role с константами
Guest, User и Admin.
Дана переменная:
Role role = Role.User;
Для переменной role
запишите в code число: Guest -
0, User - 1,
Admin - 2.
Выведите code.