C#プログラミング04:制御コードストリーム


ドアが

if ( 조건식 ) {
  문장
} else if ( 조건식 ) {
  문장
} else {
  문장
}

switch


スイッチドア


条件式は文字列フォーマットをサポートします.
break文の代わりにgoto,returnを使用することも可能である.
switch ( 조건식 ) {
	case 상수1:
    	문장
        break;
	case 상수2:
    	문장
        break;
    default:
    	break;
}
次の条件式の変数のタイプで分岐することもできます.
// 입력이 "25"인 경우, 출력값은 "int <= 30"

object parsed = null;
string raw = Console.ReadLine();

if(int.TryParse(raw, out int outi)) {
    parsed = outi;
} else if (float.TryParse(raw, out float outf)) {
    parsed = outf;
} else {
    parsed = raw;
}

switch (parsed)
{
    case float f:
        Console.WriteLine("float");
        break;
    case int i when i > 30:
    	Console.WriteLine("int > 30");
        break;
    case int i:
        Console.WriteLine("int <= 30");
        break;
    default:
        Console.WriteLine("default");
        break;
}

スイッチ式


次のコードは、上のコードと同じ動作をします.:から=>defaultに変更され、_に変更されました.
object parsed = null;
string raw = Console.ReadLine();

if(int.TryParse(raw, out int outi)) {
    parsed = outi;
} else if (float.TryParse(raw, out float outf)) {
    parsed = outf;
} else {
    parsed = raw;
}

string result = parsed switch {
    float f => "float",
    int i when i>30 => "int > 30",
    int i => "int <= 30",
    _ => "default"
};

Console.WriteLine(result);