Урок 30. Условные операторы C#


Тридцатая часть учебника по основам C# завершает изучение команд управления потоком программ, доступных в C#. В этой статье рассматриваются команды условной обработки (условные операторы), которые позволяют писать гибкий код.

Оператор if

Оператор if является наиболее часто используемым оператором условной обработки. В своем простейшем формате оператор определяет предикат и выполняет только часть кода, если условие выполнено. Синтаксис инструкции выглядит следующим образом:

if (условие) команда;
Условие определяет предикат, который должен быть выполнен. Если условие истинно, команда выполняется. Если задано значение false, команда игнорируется и обработка продолжается с помощью следующего оператора. Команда может быть одной командой или группой команд в блоке кода.

int toTest = 5;
 
if (toTest >= 0) Console.WriteLine("Positive");     // Outputs "Positive"
if (toTest < 0) Console.WriteLine("Negative");      // Outputs nothing
Оператор If-Else

Часто вы захотите выполнить один фрагмент кода, если условие выполнено, и альтернативный код, если нет. Для этого оператор if можно расширить с помощью раздела else:

if (условие) команда; else альтернативные команды;
Используя приведенный выше синтаксис, раздел условие должен по-прежнему вычислять логическое значение. Если при выполнении оператора if логическое значение равно true, то выполняется оператор команда или блок кода. Если логическое значение равно false, то выполняется альтернативная команда. Во всех случаях будет выполнена одна из двух команд.

int toTest = 5;
 
if (toTest >= 0)
    Console.WriteLine("Positive");      // Outputs "Positive"
else
    Console.WriteLine("Negative");
Вложенные операторы If

По мере усложнения программы число условий, которые должны быть обработаны, может увеличиваться. Иногда вам нужно вложить if для достижения желаемых результатов. Вложение может происходить в основной части оператора if, в разделе else или в обоих. При вложении операторов if лучше отступить код для удобства чтения.

int toTest = 5;
 
if (toTest >= 0)
{
    if (toTest == 0)
        Console.WriteLine("Zero");
    else
        Console.WriteLine("Positive");  // Outputs "Positive"
}
else
{
    Console.WriteLine("Negative");
}
Лестница "If-Else-If"

Лестница If-Else-If представляет собой комбинацию операторов, которая используется для проверки ряда условий. Первый оператор if выполняет стандартный логический тест. Если тест выполняется, выполняется код внутри if. Если нет, управление переходит к оператору else, который содержит вторую команду "if". Это продолжается как ряд операторов if, вложенных в else предыдущей команды, пока не будут проверены все условия, требующие тестирования. Команда по умолчанию или блок кода может выполняться, когда ни одно условие не было оценено в true, добавив окончательное else. Синтаксис для лестницы if-else-if выглядит следующим образом:

if (условие 1)
    Команда 1;
else if (условие 2)
    команда 2;
else if (условие 3)
    команда 3;
.
.
.
else if  (условие X)
    команда X;
else
    команда по умолчанию
Используя лестницу, можно проверить любое количество условий, и только один связанный код условия будет выполнен. Однако количество проверок не должно быть слишком большим, чтобы затруднить чтение кода. Обратите внимание, что хотя структура представляет собой просто ряд вложенных команд if, отступ минимален, чтобы показать, что лестничная структура работает и улучшить читаемость.

В следующем примере используется иерархическая структура if-else-if для классификации значения в соответствии с диапазоном, в который оно попадает:

int toTest = 5;
 
if (toTest < 0)
    Console.WriteLine("Negative");
else if (toTest == 0)
    Console.WriteLine("Zero");
else if (toTest < 5)
    Console.WriteLine("Small");
else if (toTest < 20)
    Console.WriteLine("Medium");        // Outputs "Medium"
else if (toTest < 50)
    Console.WriteLine("Large");
else
    Console.WriteLine("Huge");
Оператор Switch

Второй структурой условной обработки, доступной в C#, является оператор switch. Он похож на лестницу if-else-if, поскольку обеспечивает множественное ветвление. В случае метода switch значение переменной или выражения проверяется по ряду дискретных значений или наблюдений, пока не будет найдено соответствие. Затем выполняется код в соответствующем случае. Это позволяет выбрать одно из нескольких действий в соответствии со значением.

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

switch (выражение)
{
    case value1:
        команда 1;
        break;
    case value2:
        команда 2;
        break;
    case value3:
        команда 3;
        break;
.
.
.
    default:
        команда ;
        break;
}
В первой строке находится переключатель ключевого слова и выражения, которое необходимо провереить. Выражение должно генерировать целочисленный тип, символ или строку. Все остальные типы не могут быть использованы.

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

В следующем примере показана команда switch, используемая для отображения сообщения в соответствии с кодом состояния:

string statusCode = "OK";
 
switch (statusCode)
{
    case "OK":
        Console.WriteLine("Completed.");            // Outputs "Completed"
        break;
    case "Warn":
        Console.WriteLine("Completed with warnings.");
        break;
    case "Err":
        Console.WriteLine("Completed with errors.");
        break;
    case "Fail":
        Console.WriteLine("Failed to complete.");
        break;
    default:
        Console.WriteLine("Unknown status code");
        break;
}
В некоторых ситуациях может потребоваться выполнить один и тот же код для нескольких случаев. Это может быть достигнуто с помощью ряда пустых случаев. Если выбранное обращение не содержит кода, вместо него используется содержимое следующего непустого оператора case. Предыдущий пример может быть расширен для выбора из нескольких кодов состояния с одинаковыми результатами, как показано ниже:

string statusCode = "OK";
 
switch (statusCode)
{
    case "OK":
    case "NoError":
        Console.WriteLine("Completed.");            // Outputs "Completed"
        break;
    case "Warn":
    case "Warning":
    case "Warnings":
        Console.WriteLine("Completed with warnings.");
        break;
    case "Err":
    case "Error":
    case "Errors":
        Console.WriteLine("Completed with errors.");
        break;
    case "Fail":
    case "Failed":
        Console.WriteLine("Failed to complete.");
        break;
    default:
        Console.WriteLine("Unknown status code");
        break;
}
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, Уроки по си шарп, си шарп, условные операторы




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



VBA для CorelDRAW: координаты, размеры, копирование и получение данных из поля texbox
Усиление стрессера
3 лучших способа сохранить мотивацию в шахматах