【C#】条件分岐

目次

概要

条件分岐はif文とswitch文で実装ができる。

ソースコード

// 条件を満たした時に処理を行う
int hp = 100;
if (hp > 0) {
    Console.WriteLine("プレイヤーはまだ戦闘可能です");
}

// 条件を満たしていた時、そうでない時で処理を分岐させる
int mp = 20;
if (mp > 10) {
    Console.WriteLine("スキルを発動します");
} else {
    Console.WriteLine("スキルの発動に必要なMPが足りません");
}

// 特定の条件を満たすものだけ処理を行う
int score = 100;
if (score > 80) {
    Console.WriteLine("Rank S");
} else if (score > 60) {
    Console.WriteLine("Rank A");
} else if (score > 40) {
    Console.WriteLine("Rank B");
} else if (score > 20) {
    Console.WriteLine("Rank C");
} else {
    Console.WriteLine("Rank D");
}

String property = "火属性";
switch (property) {
    case "火属性":
        Console.WriteLine("攻撃時に炎が爆発");
        break;
    case "水属性":
        Console.WriteLine("攻撃時に水しぶきが飛ぶ");
        break;
    case "雷属性":
        Console.WriteLine("攻撃時に青白い光が走る");
        break;
    case "氷属性":
        Console.WriteLine("攻撃時に冷気が飛び散る");
        break;
    case "龍属性":
        Console.WriteLine("攻撃時に赤黒い光が飛ぶ");
        break;
    default:
        Console.WriteLine("不明な属性");
        break;
}

実行結果

プレイヤーはまだ戦闘可能です
スキルを発動します
Rank S
攻撃時に炎が爆発

詳細

if文

if文の基本形は以下の通り。

if (/* 条件式 */) {
  // 条件式が真だった場合に行われる処理
}

今回の例だと以下の部分

int hp = 100;
if (hp > 0) {
    Console.WriteLine("プレイヤーはまだ戦闘可能です");
}

これはどういうことかというと、
『「hp > 0」(hpが0より大きい)を満たす時だけ以下の処理を行う』ということになる。

Console.WriteLine("プレイヤーはまだ戦闘可能です");

else文はif文の条件を満たさない時に行われる処理。

if (/* 条件式 */) {
  // 条件式を満たす場合に行われる処理
} else {
  // if文に書かれた条件式を満たさなかった場合に行われる処理
}

更に、else-if文が存在する。
これはif文の条件式を複数設定し、どれか一つをだけの処理を行いたい時に実装する。

if (/* 条件式1 */) {
  // 条件式1を満たす場合に行われる処理
} else if (/* 条件式2 */) {
  // 条件式2を満たす場合に行われる処理
} else if (/* 条件式3 */) {
  // 条件式3を満たす場合に行われる処理
} else {
  // 上記のif文に書かれた条件式を全て満たさなかった場合に行われる処理
}

Switch文

Switc文はelse-if文に似たところがある。

switch (/* 変数 */) {
    case /* 変数の想定値 */:
        // 「変数」が「変数の想定値」と同じだった場合の処理
        break;
    case /* 変数の想定値 */:
        // 「変数」が「変数の想定値」と同じだった場合の処理
        break;
    default:
        // 上記のどの「想定値」にも当てはまらなかった場合の処理
        break;
}

今回はelse-if文と大差がないように見えるが、今後の列挙体が出てきた時、列挙体の値を漏れなく設定できるため、列挙体が使われる時にswitch文が使われる傾向にある。

参考ページ