Условная конструкция if…else в C#
В этом уроке вы узнаете, как в C# использовать конструкции if
, if...else
и if...else if
для управления выполнением программы.
В программировании проверка условий неизбежна. Мы часто сталкиваемся с ситуациями, когда нам нужно проверить условия (истинны они или ложны), чтобы контролировать выполнение программы. На эти условия могут влиять ввод пользователя, время, контекст, в котором выполняется программа, и т. д.
Мы научимся проверять логические условия с помощью оператора if.
Конструкция if
Конструкция if выполняет блок кода, если заданное условие — истинно, т. е. true
.
Синтаксис
if (условие)
{
// инструкции, которые выполняются, если логическое-выражение истинно.
}
Условие может возвращать одно из двух значений: true
или false
.
- Если
условие
=true
, инструкции внутри тела if (внутри{...}
) выполнятся. - Если
условие
=false
, C# проигнорирует инструкции внутри тела if.
Пример
if (number < 5)
{
number += 5;
}
В данном примере инструкция number += 5
выполнится только в том случае, если значение переменной number
меньше 5.
Если забыли, что делает оператор +=, вернитесь к статье «Операторы».
Блок-схема
Пример 1. Используем if
using System;
namespace Conditional
{
class IfStatement
{
public static void Main(string[] args)
{
int number = 2;
if (number < 5)
{
Console.WriteLine("{0} меньше 5", number);
}
Console.WriteLine("Эта строка выполняется всегда.");
}
}
}
Вывод:
2 меньше 5
Эта строка выполняется всегда.
Переменной number
мы присваиваем значение 2. Это значит, что выражение number < 5
равно true
. Следовательно, код внутри блока if выполняться будет. Код после оператора if всегда будет выполняться — независимо от результата выражения.
Теперь изменим значение number
на значение больше 5: например, 10.
Вывод 2:
Эта строка выполняется всегда.
Выражение number < 5
равно false
, следовательно, код внутри блока if выполняться не будет.
Инструкция if...else
За инструкцией if
в C# может идти инструкция else
, но это необязательно. Код внутри блока else будет выполняться, когда условие
равно false
.
Синтаксис
if (условие)
{
// инструкции, которые выполняются, если условие истинно
}
else
{
// инструкции, которые выполняются, если условие ложно
}
Пример
if (number < 5)
{
number += 5;
}
else
{
number -= 5;
}
В этом примере инструкция number += 5
будет выполняться, только если значение number
меньше 5. А вот инструкция number -= 5
, напротив, будет выполнять, если значение number
больше или равно 5.
Блок-схема
Пример 2. Используем if...else
using System;
namespace Conditional
{
class IfElseStatement
{
public static void Main(string[] args)
{
int number = 12;
if (number < 5)
{
Console.WriteLine("{0} меньше 5", number);
}
else
{
Console.WriteLine("{0} больше или равно 5", number);
}
Console.WriteLine("Эта строка выполняется всегда.");
}
}
}
Вывод:
12 больше или равно 5
Эта строка выполняется всегда.
Переменной number
мы присваиваем значение 12. Это значит, что выражение number < 5
равно false
. Следовательно, код внутри блока else выполняется. Код после инструкции if...else всегда будет выполняться независимо от результата выражения.
Теперь изменим значение number
на значение меньше 5: например, 2.
Вывод 2:
2 меньше 5
Эта строка выполняется всегда.
Выражение number < 5
вернет true
, следовательно, код внутри блока if выполнится.
Инструкция if...else if
Когда у нас есть только одно условие для проверки, инструкции if и if...else работают нормально. Но что, если у нас несколько условий, которые нужно проверить?
В таком случае мы можем использовать оператор if...else if
.
Синтаксис
if (условие-1)
{
// инструкции, которые выполняются, если условие-1 истинно.
}
else if (условие-2)
{
// инструкции, которые выполняются, если условие-2 истинно.
}
else if (условие-3)
{
// инструкции, которые выполняются, если условие-3 истинно.
}
.
.
.
else
{
// инструкции, которые выполняются, если все условия ложны.
}
Инструкция if...else if выполняется сверху вниз. Как только какое-либо логическое выражение становится истинным, выполняется код внутри этого блока if (или else if). Затем управление выходит из инструкции.
Если ни одно из логических выражений не является истинным, выполняется код внутри блока else.
В качестве альтернативы мы можем использовать оператор switch в подобной ситуации.
Пример 3. Используем if...else if
using System;
namespace Conditional
{
class IfElseIfStatement
{
public static void Main(string[] args)
{
int number = 12;
if (number < 5)
{
Console.WriteLine("{0} меньше 5", number);
}
else if (number > 5)
{
Console.WriteLine("{0} больше 5", number);
}
else
{
Console.WriteLine("{0} равно 5");
}
}
}
}
Вывод:
12 больше 5
Переменной number
мы присваиваем значение 12. Таким образом, первое условие number < 5
равно false
. Это значит, что, управление перейдет в блок else if. Условие number > 5
равно true
. Значит, выполнится код внутри блока else if.
Примечание. Попробуйте менять значение number и посмотрите, как от этого меняется вывод программы.
Вложенная конструкция if...else
Инструкция if...else может существовать внутри другой инструкции if...else. Такие инструкции называются вложенными.
Синтаксис
if (логическое-выражение)
{
if (вложенное-выражение-1)
{
// инструкции
}
else
{
// инструкции
}
}
else
{
if (вложенное-выражение-2)
{
// инструкции
}
else
{
// инструкции
}
}
Вложенные инструкции if обычно используют, когда нужно последовательно проверить два условия. Если внешний оператор if возвращает true
, то управление переходит в тело для проверки вложенного оператора if.
Пример 4. Используем вложенный if...else
Эта программа вычисляет наибольшее число среди 3 чисел, используя вложенный конструкцию if...else.
using System;
namespace Conditional
{
class Nested
{
public static void Main(string[] args)
{
int first = 7, second = -23, third = 13;
if (first > second)
{
if (first > third)
{
Console.WriteLine("{0} - наибольшее число", first);
}
else
{
Console.WriteLine("{0} - наибольшее число", third);
}
}
else
{
if (second > third)
{
Console.WriteLine("{0} - наибольшее число", second);
}
else
{
Console.WriteLine("{0} - наибольшее число", third);
}
}
}
}
}
Вывод:
13 — наибольшее число