【C#超入門】三項演算子?を使ってif文を1行にまとめる方法

C# 三項演算子?

今回は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

三項演算子?を使った場合

三項演算子?を使うと先ほどのコードは次のように表現できます。

変数anstrueならZerofalseなら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チェック時のみに使うという条件があります。

例えば、変数ansnullでなければ0nullなら100を返す式を考えてみます。

string ans = 0 ?? 100;

三項演算子は多用しないほうがいい場合もある

if文で書いた冗長なコードを三項演算子を使うことで1行にまとめることができて良いと信じられていますが、注意点もあります。

それは、三項演算子を使うとコードがわかりにくくなるということです。

三項演算子は可読性が悪い

例えば、次のような複雑な式は非常に解読しにくくなってしまいます。

f(a ? g(a, (x ? b : c) + y) : b, c);

そのため、条件式が複雑になるようなコードの場合は素直にif文を選択することをおすすめします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

都内の精密機器を作っている会社に勤務している14年目のエンジニアです。趣味は美味しいものを食べることとゴルフ。プログラムについて今まで学んだことをわかりやすく発信するサイトを目指しています。

コメント

コメントする

目次
閉じる