決定および分岐 (Visual C# Express)

更新 : 2007 年 11 月

入力された値や計算結果の値に応じて制御フローを変更する操作は、プログラミング言語において重要な部分です。C# では、無条件または条件付きで制御フローを変更できます。無条件に変更する場合はコード内の新しい位置にジャンプし、条件付きで変更する場合にはテストを実行します。

解説

最も単純な条件分岐では、if 構造を使用します。if 構造では else 句を使用できます。また、if 構造は入れ子にできます。

using System;

class Program
{
    static void Main()
    {
        int x = 1;
        int y = 1;


        if (x == 1)
            Console.WriteLine("x == 1");
        else
            Console.WriteLine("x != 1");


        if (x == 1)
        {
            if (y == 2)
            {
                Console.WriteLine("x == 1 and y == 2");
            }
            else
            {
                Console.WriteLine("x == 1 and y != 2");
            }
        }                
    }
}
s3xe34ex.alert_note(ja-jp,VS.90).gifメモ :

C や C++ とは異なり、if ステートメントではブール値を使用する必要があります。たとえば、(a=10) のような、単純な True または False に評価されないステートメントは使用できません。C# では、False の代わりに 0、True の代わりに 1 (またはその他の値) を使用することはできません。

if キーワードおよび else キーワードに続くステートメントは、上のコード例の最初の if-else ステートメントに示すような 1 行のコード、または 2 番目の if-else ステートメントに示すような中かっこ ({}) で囲まれた一連のステートメントになります。if-else ステートメントは入れ子にできますが、一般に、入れ子よりも switch ステートメントを使用する方がプログラミング手法としては優れています。

switch ステートメントは、指定された式の値に基づいて複数の処理を実行できます。条件に一致すると、case ステートメントと break キーワードの間のコードが実行されます。制御フローを別の case ステートメントに引き継ぐには、goto キーワードを使用します。

using System;

class Program
{
    static void Main()
    {
        int x = 3;

        switch (x)
        {
            case 1: 
                Console.WriteLine("x is equal to 1");
                break;

            case 2:
                Console.WriteLine("x is equal to 2");
                break;

            case 3:
                goto default;

            default:
                Console.WriteLine("x is equal to neither 1 nor 2");
                break;
        }
    }
}

switch ステートメントで実行する case を判別するために使用される式では、int や string などの組み込みデータ型 (Visual C# Express)を使用する必要があります。複雑なユーザー定義の型を使用することはできません。

Visual Basic とは異なり、C# では条件として定数値を使用する必要があります。たとえば、式を値の範囲と比較することはできません。

参照

概念

C# 言語の概要

参照

選択ステートメント (C# リファレンス)

ジャンプ ステートメント (C# リファレンス)