今回はC#の三項演算子について解説していきます。
条件式を1行にすることができるので知っておいて損はない手法です。
目次
スポンサーリンク
三項演算子?を使ってif文を1行にする
実際に三項演算子?を使ってif
文を単純化する方法を解説していきます。
if文を使った場合
例えば、if
文を使った例を挙げます。
サンプルコード
int a = 0;
string ans = string.Empty;
if(a == 0)
{
ans = "Zero";
}
else
{
ans = "Not zero";
}
Console.WriteLine(ans);
実行結果
Zero
三項演算子?を使った場合
三項演算子?を使うと先ほどのコードは次のように表現できます。
変数ans
がtrue
ならZero
、false
ならNot zero
を返します。
サンプルコード
int a = 0;
string ans = (a == 0) ? "Zero" : "Not zero";
Console.WriteLine(ans);
実行結果
Not zero
条件式を見事1行にまとめることができました。これであれば、コード行数をギュッと短くできますね。
三項演算子の書き方としてはこのようになります。
型名 変数名 = (条件式) ? trueの場合 : falseの場合;
条件式の後に?
を書いたあとに、出力結果を:
を用いて左にtrue
の場合、右にfalse
の場合といった感じで書きます。
??演算子(Null合体演算子)はNULLチェックで使おう
三項演算子に似た書き方として??演算子(Null合体演算子)というものがあります。
使用用途は限られていて、NULLチェック時のみに使うという条件があります。
例えば、変数ans
がnull
でなければ0
、null
なら100
を返す式を考えてみます。
string ans = 0 ?? 100;
三項演算子は多用しないほうがいい場合もある
if
文で書いた冗長なコードを三項演算子を使うことで1行にまとめることができて良いと信じられていますが、注意点もあります。
それは、三項演算子を使うとコードがわかりにくくなるということです。
三項演算子は可読性が悪い
例えば、次のような複雑な式は非常に解読しにくくなってしまいます。
f(a ? g(a, (x ? b : c) + y) : b, c);
そのため、条件式が複雑になるようなコードの場合は素直にif
文を選択することをおすすめします。
コメント