if-else (Справочник по C#)if-else (C# Reference)

Оператор if определяет, какой оператор будет выполняться при выполнения условия, заданного логическим выражением.An if statement identifies which statement to run based on the value of a Boolean expression. В приведенном ниже примере переменной bool типа condition присваивается значение true , а затем она проверяется оператором if .In the following example, the bool variable condition is set to true and then checked in the if statement. В результате получается The variable is set to true..The output is The variable is set to true..

bool condition = true;

if (condition)
{
    Console.WriteLine("The variable is set to true.");
}
else
{
    Console.WriteLine("The variable is set to false.");
}

Примеры в этом разделе можно выполнить, разместив их в методе Main консольного приложения.You can run the examples in this topic by placing them in the Main method of a console app.

Оператор if в С# может иметь две формы, как показано в приведенном ниже примере.An if statement in C# can take two forms, as the following example shows.

// if-else statement
if (condition)
{
    then-statement;
}
else
{
    else-statement;
}
// Next statement in the program.

// if statement without an else
if (condition)
{
    then-statement;
}
// Next statement in the program.

В операторе if-else , если condition имеет значение true, выполняется then-statement .In an if-else statement, if condition evaluates to true, the then-statement runs. Если condition имеет значение false, выполняется else-statement .If condition is false, the else-statement runs. Так как condition не может одновременно иметь значения true и false, then-statement и else-statement оператора if-else не могут выполняться оба.Because condition can’t be simultaneously true and false, the then-statement and the else-statement of an if-else statement can never both run. После выполнения then-statement или else-statement управление передается следующему оператору после оператора if .After the then-statement or the else-statement runs, control is transferred to the next statement after the if statement.

В операторе if , не включающем оператор else , если condition имеет значение true, выполняется then-statement .In an if statement that doesn’t include an else statement, if condition is true, the then-statement runs. Если condition имеет значение false, то управление передается следующему оператору после оператора if .If condition is false, control is transferred to the next statement after the if statement.

then-statement и else-statement могут состоять из одного или нескольких операторов, заключенных в фигурные скобки ({}).Both the then-statement and the else-statement can consist of a single statement or multiple statements that are enclosed in braces ({}). Для одного оператора скобки необязательны, но рекомендуются.For a single statement, the braces are optional but recommended.

Оператор или операторы в then-statement и else-statement могут быть любого типа, включая другой оператор if , вложенный в исходный оператор if .The statement or statements in the then-statement and the else-statement can be of any kind, including another if statement nested inside the original if statement. Во вложенных операторах if каждое предложение else относится к последнему оператору if , у которого нет соответствующего объекта else.In nested if statements, each else clause belongs to the last if that doesn’t have a corresponding else. В приведенном ниже примере Result1 получается, если оба выражения m > 10 и n > 20 имеют значение true.In the following example, Result1 appears if both m > 10 and n > 20 evaluate to true. Если m > 10 имеет значение true, но n > 20 — значение false, то получается Result2 .If m > 10 is true but n > 20 is false, Result2 appears.

// Try with m = 12 and then with m = 8.
int m = 12;
int n = 18;

if (m > 10)
    if (n > 20)
    {
        Console.WriteLine("Result1");
    }
    else
    {
        Console.WriteLine("Result2");
    }

Если вместо этого нужно, чтобы Result2 получался, когда значение (m > 10) равно false, можно указать такую связь с помощью фигурных скобок для задания начала и конца вложенного оператора if , как показано в приведенном ниже примере.If, instead, you want Result2 to appear when (m > 10) is false, you can specify that association by using braces to establish the start and end of the nested if statement, as the following example shows.

// Try with m = 12 and then with m = 8.
if (m > 10)
{
    if (n > 20)
        Console.WriteLine("Result1");
}
else
{
    Console.WriteLine("Result2");
}

Result2 получается, если условие (m > 10) имеет значение false.Result2 appears if the condition (m > 10) evaluates to false.

ПримерExample

В приведенном ниже примере вы вводите символ с помощью клавиатуры, а программа использует вложенный оператор if для определения того, является ли введенный символ буквой.In the following example, you enter a character from the keyboard, and the program uses a nested if statement to determine whether the input character is an alphabetic character. Если введенный символ является буквой, программа определяет его регистр.If the input character is an alphabetic character, the program checks whether the input character is lowercase or uppercase. Для каждого случая предусмотрено отдельное сообщение.A message appears for each case.

Console.Write("Enter a character: ");
char c = (char)Console.Read();
if (Char.IsLetter(c))
{
    if (Char.IsLower(c))
    {
        Console.WriteLine("The character is lowercase.");
    }
    else
    {
        Console.WriteLine("The character is uppercase.");
    }
}
else
{
    Console.WriteLine("The character isn't an alphabetic character.");
}

//Sample Output:

//Enter a character: 2
//The character isn't an alphabetic character.

//Enter a character: A
//The character is uppercase.

//Enter a character: h
//The character is lowercase.

ПримерExample

Также можно поместить оператор if в блок else, как показано в части кода, приведенной ниже.You also can nest an if statement inside an else block, as the following partial code shows. В примере операторы if помещаются в два блока else и один блок then.The example nests if statements inside two else blocks and one then block. Комментарии определяют какие условия выполняются в каждом из блоков.The comments specify which conditions are true or false in each block.

// Change the values of these variables to test the results.
bool Condition1 = true;
bool Condition2 = true;
bool Condition3 = true;
bool Condition4 = true;

if (Condition1)
{
    // Condition1 is true.
}
else if (Condition2)
{
    // Condition1 is false and Condition2 is true.
}
else if (Condition3)
{
    if (Condition4)
    {
        // Condition1 and Condition2 are false. Condition3 and Condition4 are true.
    }
    else
    {
        // Condition1, Condition2, and Condition4 are false. Condition3 is true.
    }
}
else
{
    // Condition1, Condition2, and Condition3 are false.
}

ПримерExample

В приведенном ниже примере определяется, является ли введенный символ строчной буквой, прописной буквой или цифрой.The following example determines whether an input character is a lowercase letter, an uppercase letter, or a number. Если все три условия имеют значение false, то символ не является алфавитно-цифровым.If all three conditions are false, the character isn’t an alphanumeric character. Для каждого случая выводится сообщение.The example displays a message for each case.

Console.Write("Enter a character: ");
char ch = (char)Console.Read();

if (Char.IsUpper(ch))
{
    Console.WriteLine("The character is an uppercase letter.");
}
else if (Char.IsLower(ch))
{
    Console.WriteLine("The character is a lowercase letter.");
}
else if (Char.IsDigit(ch))
{
    Console.WriteLine("The character is a number.");
}
else
{
    Console.WriteLine("The character is not alphanumeric.");
}

//Sample Input and Output:
//Enter a character: E
//The character is an uppercase letter.

//Enter a character: e
//The character is a lowercase letter.

//Enter a character: 4
//The character is a number.

//Enter a character: =
//The character is not alphanumeric.

Точно так же как оператор в блоке else или блоке then может быть любым допустимым оператором, в качестве условия можно использовать любое допустимое логическое выражение.Just as a statement in the else block or the then block can be any valid statement, you can use any valid Boolean expression for the condition. Вы можете использовать логические операторы, такие как !, &&, ||, &, |и ^, для формирования составных условий.You can use logical operators such as !, &&, ||, &, |, and ^ to make compound conditions. В коде ниже приведены примеры.The following code shows examples.

// NOT
bool result = true;
if (!result)
{
    Console.WriteLine("The condition is true (result is false).");
}
else
{
    Console.WriteLine("The condition is false (result is true).");
}

// Short-circuit AND
int m = 9;
int n = 7;
int p = 5;
if (m >= n && m >= p)
{
    Console.WriteLine("Nothing is larger than m.");
}

// AND and NOT
if (m >= n && !(p > m))
{
    Console.WriteLine("Nothing is larger than m.");
}

// Short-circuit OR
if (m > n || m > p)
{
    Console.WriteLine("m isn't the smallest.");
}

// NOT and OR
m = 4;
if (!(m >= n || m >= p))
{
    Console.WriteLine("Now m is the smallest.");
}
// Output:
// The condition is false (result is true).
// Nothing is larger than m.
// Nothing is larger than m.
// m isn't the smallest.
// Now m is the smallest.

Спецификация языка C#C# language specification

Дополнительные сведения см. в спецификации языка C#.For more information, see the C# Language Specification. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.The language specification is the definitive source for C# syntax and usage.

См. такжеSee also