今回は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文を選択することをおすすめします。

コメント