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 変数 conditiontrue に設定してから、 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.

C# の if ステートメントは、次の例に示すように 2 つの形式を取ります。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-statementif-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.

else ステートメントが含まれない if ステートメントで 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-statementelse-statement はどちらも、中かっこ ({}) で囲まれた 1 つのステートメントまたは複数のステートメントで構成できます。Both the then-statement and the else-statement can consist of a single statement or multiple statements that are enclosed in braces ({}). ステートメントが 1 つの場合、中かっこは省略可能ですが、使用することが推奨されます。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. 次の例では、 Result1m > 10 の両方が true に評価されると、 n > 20 が表示されます。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 が false の場合に (m > 10) を表示させるには、次の例に示すように、中かっこを使用して入れ子になった 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");
}

条件 (m > 10) が false に評価されると、Result2 が表示されます。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. この例では、2 つの else ブロックと 1 つの then ブロックの中で if ステートメントを入れ子にしています。The example nests if statements inside two else blocks and one then block. コメントに、各ブロックでどの条件が true または false であるかを示しています。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. 3 つすべての条件が 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