if-else (C# リファレンス)
更新 : 2007 年 11 月
if ステートメントは、Boolean 型の式の値に基づいて、実行するステートメントを選択します。次の例では、Boolean フラグ flagCheck が true に設定され、if ステートメントで検証されます。出力は The flag is set to true になります。
bool result = true;
if (result == true)
{
Console.WriteLine("The variable is set to true.");
}
else
{
Console.WriteLine("The variable is set to false.");
}
かっこで囲まれた式が true と評価されると、Console.WriteLine("The boolean flag is set to true."); ステートメントが実行されます。if ステートメントを実行した後、制御は次のステートメントに移動します。この例では else は実行されません。
複数のステートメントを実行する場合には、上の例で示すように、{} を使用してこれらのステートメントをブロックに組み込むと、条件付きで実行できます。
条件の評価に従って実行されるステートメントは、元の if ステートメントに入れ子になった他の if ステートメントなど、どのような種類のステートメントでもかまいません。if ステートメントが入れ子にされている場合、else 句は、対応する else を持たない最後の if に従属します。次に例を示します。
int x = 12;
int y = 18;
if (x > 10)
if (y > 20)
Console.Write("Statement_1");
else
Console.Write("Statement_2");
この例では、Statement_2 は、条件 (y > 20) が false の場合に表示されます。ただし、Statement_2 と条件 (x >10) を関連付ける場合は次のように中かっこを使用します。
if (x > 10)
{
if (y > 20)
Console.Write("Statement_1");
}
else
Console.Write("Statement_2");
この場合は、Statement_2 は、条件 (x > 10) が false の場合に表示されます。
使用例
キーボードから文字を入力して、入力文字がアルファベットかどうかをチェックする例を次に示します。アルファベットの場合は、大文字か小文字かをチェックします。いずれの場合にも、それぞれに応じたメッセージが表示されます。
class IfTest
{
static void Main()
{
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("Not an alphabetic character.");
}
}
/*
Input:
2
Sample Output
Enter a character: 2
The character is not an alphabetic character.
Additional sample might look as follows:
Run #2:
Enter a character: A
The character is uppercase.
Run #3:
Enter a character: h
The character is lowercase.
* */
}
また、次の else-if 配置によって if ステートメントを拡張し、複数の条件を処理することもできます。
if (Condition_1)
{
// Statement_1;
}
else if (Condition_2)
{
// Statement_2;
}
else if (Condition_3)
{
// Statement_3;
}
else
{
// Statement_n;
}
入力文字が小文字、大文字、数字のいずれであるかをチェックする例を次に示します。それ以外の場合、入力文字は英数字ではありません。このプログラムでは、else-if による条件分岐を使用します。
public class IfTest3
{
static void Main()
{
Console.Write("Enter a character: ");
char c = (char)Console.Read();
if (Char.IsUpper(c))
{
Console.WriteLine("Character is uppercase.");
}
else if (Char.IsLower(c))
{
Console.WriteLine("Character is lowercase.");
}
else if (Char.IsDigit(c))
{
Console.WriteLine("Character is a number.");
}
else
{
Console.WriteLine("Character is not alphanumeric.");
}
}
}
/*
Sample Input: E
Sample Output:
Enter a character: E
The character is uppercase.
Additional sample runs might look as follows:
Run #2
Enter a character: e
The character is lowercase.
Run #3:
Enter a character: 4
The character is a number.
Run #4:
Enter a character: $
The character is not alphanumeric.
*/
C# 言語仕様
詳細については、「C# 言語仕様」の次のセクションを参照してください。
5.3.3.5 if ステートメント
8.7.1 if ステートメント