C#で三項演算子を使う方法について書いています。
記事内のサンプルコードについては、.Netのバージョン6(C#のバージョン10)で確認しました。
C#の三項演算子の使い方
三項演算子は1行で条件式を書いて、判定結果(true
またはfalse
)で、ふたつのどちらかの値を返してくれる演算子です。
例えば、下記のように使うことができます。
int number = 5;
string text = 1 < number ? "numberは1以上" : "numberは1未満";
Console.WriteLine(text); // numberは1以上
最初にnumber
変数に数値の「5」を代入しました。
次の処理で三項演算子を使っています。
「1 < number ?
」としている箇所が、条件で判定している箇所です。
条件に合っている(true
)のときには、コロン(:
)の左の値が返ってきます。
そして、条件に合わない(false
)のときには、コロン(:
)の右の値が返ってきます。
今回はnumber
変数は「5」なので、条件を確認すると「true
」が返ってきます。
そのため、プログラムを実行すると下記のようになります。
numberは1以上
コロンの左側の文字列が返ってきて出力されました。
日本語でまとめると、下記のようになります。
条件 ? "trueのときに返る値" : "falseのときに返る値";
何かの値と比較して、どちらかの値を受け取りたいときに使うと、if文を使うよりもシンプルに書けます。
例えば、先ほどの三項演算子をif文で書くと下記のようになります。
string text = "";
if (1 < number) {
text = "numberは1以上";
} else {
text = "numberは1未満";
}
これくらいの単純な式や、論理値を判定したりするときには三項演算子の方が見やすくて良いかと思います。
三項演算子を続けて複数書く
三項演算子は続けて複数回書くこともできますが、なるべく避けた方が良いです。
例えば、下記のように書くことができます。
int number1 = 0;
int number2 = 10;
string text = 1 < number1 ? "number1は以上" : (5 < number2 ? "number2は5以上" : "number2は5未満");
Console.WriteLine(text); // number2は5以上
最初にnumber1
変数に「0」、number2
変数に「10」を代入しました。
次の処理で、三項演算子を2回使っています。
まず「1 < number1 ?
」と比較していますが、number1
変数は「1」より低いためfalseが返って、コロン(:
)の右側が返ります。
コロンの右側を見ると、さらに三項演算子で「5 < number2 ?
」と比較しています。
ここでは、number2
変数は「5」以上なので、trueになり、コロンの左側の「number2は5以上
」が返ってきます。
そのため、text
変数には最終的に「number2は5以上
」が代入されます。
このように続けて、三項演算子を複数回使うことはできます。
ですが、ソースコードが読みにくく、何をしているか読み取りづらくなるのでやめた方が良いかと思います。
シンプルに1行で値を返したいときに使うのがおすすめです。
三項演算子を使う方法まとめ
今回はC#で三項演算子を使う方法について書きました。
最後に記事の内容をまとめると、下記のようになります。
・条件の結果が`true`のときには左側が、`false`のときには右側が返ってくる。
・複数の三項演算子を続けて書くと分かりにくくなるため、続けて書くことは控える。
コメント