本文へスキップ
BecomeCoder

C#文法コース · 第9章 文法をさらに使いこなす · レッスン63

条件(三項)演算子

ブラウザで完結

導入

「条件によって値を出し分けたいだけ」なのに if-else で4行書くと冗長です。条件演算子(三項演算子)? : を使うと、条件による値の選択を1行で書けます。

説明

flowchart LR
    C["score >= 60 ?"] -->|true| A[""合格""]
    C -->|false| B[""不合格""]
    style C fill:#fff3e0

条件 ? 真のときの値 : 偽のときの値 という形。なので、そのまま変数に代入したり、メソッドの引数に渡したりできます。

サンプル

int score = 72;

// if-else を1行で
string result = score >= 60 ? "合格" : "不合格";
Console.WriteLine(result);   // 合格

// 値の計算にもそのまま使える
int abs = score >= 0 ? score : -score;
Console.WriteLine(abs);      // 72

// 分岐が3つ以上なら switch 式のほうが読みやすい
string grade = score switch { >= 80 => "A", >= 60 => "B", _ => "C" };
Console.WriteLine(grade);    // B
  • 条件 ? A : B は「条件が真なら A、偽なら B」を返す
  • 代入・引数・return にそのまま書ける
  • ネストしすぎると読みにくい。3分岐以上は switch 式を検討する

やってみよう

score の値を変えて出力の変化を見たり、条件演算子をネスト(a ? b : (c ? d : e))してから、同じ内容を switch 式に書き換えて読みやすさを比べてみましょう。

演習

int n = 7;

// TODO: 条件演算子で、n が偶数なら "even"、奇数なら "odd" を出力してください
string parity = ___;
Console.WriteLine(parity);   // odd
  • 期待される出力: odd
ヒント1を見る

偶数判定は n % 2 == 0

ヒント2を見る

n % 2 == 0 ? "even" : "odd" と書きます

まとめ

  • 条件演算子 ? : は条件による値の選択を1行で書く
  • 代入・引数・return にそのまま使える
  • 分岐が増えたら switch 式のほうが読みやすい

次回: オブジェクト指向コースへ。クラスオブジェクトから設計の世界に入ります。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。