条件分岐と繰り返し構文
条件分岐
if 文
if文を使用すると指定した条件のときだけ処理を実行することができます。例えば以下のように書きます。
if (Console.ReadLine() == "y")
{
    Console.WriteLine("Hi");
}
構文の書き方としては以下のようになります。条件式のところにはtrueかfalseのいずれかを書く必要があります。
if (条件式)
{
    //条件式の値がtrueのときに実行されるコード
}
Console.ReadLine() == "y"というコード全体でtrueかfalseになります。(C#の基礎文法の演算子参照)
一度Boolean型の変数にいれて条件を分岐することもできます。
Boolean bl = Console.ReadLine() == "y";
if (bl)
{
    Console.WriteLine("Hi");
}
if else 文
条件がtrueの場合はコード1、falseの場合はコード2を実行したい場合もあります。if else 文を使用するとそのような条件分岐をさせることができます。
if (Console.ReadLine() == "y")
{
    Console.WriteLine("Yes!!");
}
else
{
    Console.WriteLine("Not yes...");
}
if else if 文
条件1がtrueの場合はコード1、条件2がtrueの場合はコード2を実行したい場合もあります。 if else if 文を使用するとそのような条件分岐をさせることができます。
if (Console.ReadLine() == "y")
{
    Console.WriteLine("Yes!!");
}
else if (Console.ReadLine() == "n")
{
    Console.WriteLine("No!");
}
if else if else 文
条件1がtrueの場合はコード1、条件2がtrueの場合はコード2、それ以外の場合はコード3を実行したい場合もあります。 if else if else 文を使用するとそのような条件分岐をさせることができます。
if (Console.ReadLine() == "y")
{
    Console.WriteLine("Yes!!");
}
else if (Console.ReadLine() == "n")
{
    Console.WriteLine("No!");
}
else
{
    Console.WriteLine("Not all...");
}
if 文の構文をまとめると以下の形になります。条件のところにはtrueかfalseを書く必要があります。 ifとelseは1回しか書けません。else if はいくつでも繰り返すことが可能です。
if (条件式1)
{
    //処理1
}
else if (条件式2)
{
    //処理2
}
else if (条件式3)
{
    //処理3
}
else
{
    //処理4
}
switch 文
switch文を使用するとある1つの条件に対しての値に応じて実行する処理を分岐させることが可能です。
String mode = Console.ReadLine();
switch (mode)
{
    case "朝": 
        Console.WriteLine("Hello.");
        break;
    case "昼": 
        Console.WriteLine("Hi!");
        break;
    case "夜": 
        Console.WriteLine("Bye");
        break;
    default:
        Console.WriteLine("Oh!");
        break;
}
modeの値が朝の場合、Console.WriteLine("Hello.")が実行されます。昼の場合、Console.WriteLine("Hi!")が実行されます。 夜の場合も同様です。朝でも昼でも夜でもない場合にはConsole.WriteLine("Oh!")が実行されます。 上記の内容をif 文で書くと以下のようになります。
String mode = Console.ReadLine();
if (mode == "朝")
{
    Console.WriteLine("Hello.");
}
else if (mode == "昼")
{
    Console.WriteLine("Hi!");
}
else if (mode == "夜")
{
    Console.WriteLine("Bye");
}
else 
{
    Console.WriteLine("Oh");
}
if 文とswitch 文の使い分けですが、if 文はいつでも使用できるのに対し、switch 文は条件式の左辺が同じときだけ使用できます。 例えば下の例のようにmode == まで同じ条件式が並んでいる場合はswitch 文にすることができます。
String mode = Console.ReadLine();
if (mode == "朝")
{
    Console.WriteLine("Hello.");
}
else if (mode == "昼")
{
    Console.WriteLine("Hi!");
}
else if (mode == "夜")
{
    Console.WriteLine("Bye");
}
else 
{
    Console.WriteLine("Oh");
}
例えば以下のようなif 文はswitch 文にできません。条件式の部分がそれぞれ異なるからです。
String mode = Console.ReadLine();
String lang = Console.ReadLine();
if (mode == "朝")
{
    Console.WriteLine("Hello.");
}
else if (mode == "昼" && lang == "英語")
{
    Console.WriteLine("Hi!");
}
else if (mode == "昼" && lang == "日本語")
{
    Console.WriteLine("こんにちは!");
}
else if (mode == "夜")
{
    Console.WriteLine("Bye");
}
else 
{
    Console.WriteLine("Oh");
}
基本的にはif 文を使用すれば何でも書くことができます。switch 文を使用したほうがいい理由は2つあります。 1つは可読性があがる場合がありそのときはswitch 文のほうが良いでしょう。 例えば下のような場合はif 文よりも可読性があがる場合があります。
String mode = Console.ReadLine();
switch (mode)
{
    case "朝": Console.WriteLine("Hello."); break;
    case "昼": Console.WriteLine("Hi!"); break;
    case "夜": Console.WriteLine("Bye"); break;
    default: Console.WriteLine("Oh!"); break;
}
もう1つはEnumと共に使用する場合です。VisualStudioのコードスニペットの機能で入力補完が働くので作業効率の向上と漏れの防止ができます。
MyDirectionEnum dirction = MyDirectionEnum.North;
switch (dirction)
{
    case MyDirectionEnum.North: /* 北に動く処理 */ break;
    case MyDirectionEnum.South: /* 南に動く処理 */ break;
    case MyDirectionEnum.West: /* 西に動く処理 */ break;
    case MyDirectionEnum.East: /* 東に動く処理 */ break;
    default: /* 何もしない */ break;
}
Create at 2012/1/20 LastUpdate 2012/1/20