今回は、C#での三項演算子の正しい使い方と具体例についてご紹介します。
三項演算子とは
三項演算子は、条件演算子とも呼ばれ、条件式の結果に応じて返す値を簡潔に記述できる演算子です。
通常のif-else文を1行に集約できるため、コードをスッキリさせたいときに重宝します。
基本的な使い方
まずは構文を確認してみます。
基本構文は下記の通りです。
変数名 = 条件式 ? 真の場合の値 : 偽の場合の値;
条件式には、bool型(true/false)を返す式を記述します。
以下にif-else文と比較したサンプルコードを示します。
1 2 3 4 |
bool isActive = true; // 三項演算子を使って文字列を切り替える string status = isActive ? "アクティブ" : "非アクティブ"; Console.WriteLine(status); |
アクティブ
上記のように、条件式にisActiveを置き、trueの場合は「アクティブ」、falseの場合は「非アクティブ」という文字列を返します。
同じ処理をif-elseで書くと数行必要になるため、三項演算子を使うと記述量が大幅に削減できる点がメリットです。
実用的な具体例
スコア評価の例
数値の大小に応じて文字列を返すケースを見てみます。
1 2 3 4 |
int score = 75; // 60点以上なら合格、そうでなければ不合格とする string result = score >= 60 ? "合格" : "不合格"; Console.WriteLine(result); |
合格
このように、コードを一行で書けるため視認性とコンパクトさが向上します。
ネスト(入れ子)した条件分岐
条件が複数にわたる場合は、次のようにネストできます。
1 2 3 4 5 6 |
int score = 85; // スコアに応じた評価を三項演算子でネストして行う string evaluation = score >= 90 ? "優" : score >= 75 ? "良" : score >= 60 ? "可" : "不可"; Console.WriteLine(evaluation); |
良
ネストを多用すると可読性が落ちやすいため、if-elseやswitch文との使い分けが重要です。
メソッドの戻り値に使用する例
メソッドで引数に応じた結果を返す場合も、三項演算子で表現できます。
1 2 3 4 5 |
public string GetStatus(bool isOnline) { // 引数isOnlineがtrueなら"オンライン"、falseなら"オフライン"を返す return isOnline ? "オンライン" : "オフライン"; } |
(このメソッドを呼び出してConsole.WriteLine(GetStatus(true));とした場合)
オンライン
このように、条件によって単純に値を返すだけなら、三項演算子を使うとコードの記述量を減らせます。
注意点
最後に、三項演算子を使用する際に意識しておきたいポイントを挙げます。
- 可読性を損なわない範囲で使う
- 型の整合性を保つ(真の場合と偽の場合の型を一致させる)
- 副作用のある処理は避ける
- デバッグのしやすさを考慮する
これらの点に留意すると、三項演算子を効果的に使いこなせます。
まとめ
三項演算子は、短い条件分岐に最適な構文です。
コンパクトにコードをまとめたいときに重宝しますが、複雑になりすぎないように注意してください。
if-elseやswitch文と併せて使い分けることで、より見やすく保守しやすいコードが書けます。