Всем Хай! Сегодня мы рассмотрим условный оператор «switch». При изучении урока о нём у меня сложилось двоякое мнение. И мне даже пришлось искать отдельные ролики по этому оператору, чтобы понять смысл этого оператора вообще.
Оператор «switch» везде сравнивают с оператором «if», который я описывал в этой статье. Что по мне кажется не совсем корректным. Да при помощи того и этого оператора можно делать одинаковый алгоритм действий, и «switch» не зря называется условным. Ведь в него тоже нужно задавать условие, при котором он должен отработать. Проблема в том, что это условие может равняться только одному значению. В нём можно прописать только равенство с чем либо. То есть если в «if» мы можем записать: больше, меньше, равно, больше либо равно, меньше либо равно. То в «switch» мы можем искать только равные значения. Это похоже на кодовый замок. Он откроется если ввести только определённое число.
Давайте посмотрим пример кода и сравним его из статьи про оператор «if».
string week;
Console.WriteLine("Сегодня какой день недели?");
week = Console.ReadLine();
switch (week)
{
case "понедельник":
Console.WriteLine("Сходить на работу");
Console.WriteLine("Договориться о свидании");
break;
case "суббота":
case "вторник":
Console.WriteLine("Сходить в спортзал");
break;
case "среда":
Console.WriteLine("Починить машину");
break;
case "четверг":
Console.WriteLine("Купить подарок");
break;
case "пятница":
Console.WriteLine("Пойти на свидание");
break;
default:
Console.WriteLine("В этот день ничего нет. Чилим");
break;
}
Console.WriteLine("Пятница отличный день");
Сейчас вставил код в статью и решил сравнить его визуально с кодом из статьи про оператор «if». Потому что все программисты в один голос говорят, что внешне «switch» выглядит лучше, чем «if». Ну не знаю. Может только если компактней. А вы как думаете? Напиши в комментариях.
Но вернёмся к нашим «зайцам». Логика проста, мы вводим переменную в код и значения в ней сравниваем с теми, что записаны в «switch».
Главный вопрос. Что и в каких ситуация предпочтительней использовать при разработке? Если в двух словах, то когда у вас в игре появляется действие с тремя и более вариантами выбора, то лучше использовать «switch».
Навскидку, например, когда возникает несколько вариантов ответов в игровых диалогах.
А если варианта только два и не планируется этот список расширять, то «if». И не потому, что «switch» красивее выглядит и проще добавлять новые варианты, а из-за логики работы.
Когда в «switch» попадает запрос на определения выбора работы, он сразу переходит к нужному «case». А в случае с «if» будет анализироваться каждая строчка кода с выбором, сверху вниз. И анализ закончится тогда, когда будет найден нужный вариант. Потом работа кода остановится.
Как я говорил выше, объединение несколько вариантов ответов в один проще в «switch». Так, как я сделал с «субботой» и «вторником» в коде. При любом вводе дня недели из этих двух нам покажет один и тот же результат. В «if» нам бы пришлось вначале сразу добавлять в условие этот день через логическое «ИЛИ», и выглядело бы это так:
else if (week == "вторник" || "суббота")
А если у нас будет несколько таких вариантов? Представляете, как будет расти эта простыня? А в «switch» мы просто напишем такой же вариант чуть выше.
Да, кстати в «switch» использовать логические операторы «И» и «ИЛИ» нельзя.
Я надеюсь, текст не был сложным. И я сумел донести логику работы условного оператора «switch». Допускаю, что написал сумбурно. Поэтому советую ещё раз прочитать текст. А лучше прогнать код в Visual Studio. Как её установить я писал тут.
Ну а если всё равно не понятно, то пишите вопрос в комментариях. Я обязательно отвечу и вместе мы точно разберёмся.
Ну а на этом пока всё. И так как тема была сложная, то в следующей статье будет практика по пройденному материалу. Поэтому подписываемся на канал, чтобы не пропустить выпуск. Всем пока!