C#でIF文を1行で書く方法が分からなかったので備忘録。。。すいません、VBユーザーだったもので。。。
1行でIf文を書く[VB]
VBならば特に何も考えずに、こういう書き方で可能です。
VB.NETの場合
If(isHoge,"真","偽")
1行でIf文を書く[昔のVB]
ちなみに、VB2008より前はIIfという関数を使っていました。
IIf(isHoge,"真","偽")
何が違うかと言いますと、大きくは2点あります。
- Ifはコンパイラによる型推論が行われる
- IIfは真・偽いずれかの結果に関わらず両方の条件が処理される
2.がどう言うことかと言いますと、
IIf(hoge > 0, fuga / hoge , 0)
こういう条件式があった場合、0で割ると除算エラーになります。
ですので事前に0以上かどうかを判断するのですが、IIfの場合は判断前に、fuga / hogeが処理されてしまいます。判断式としての意味を成していません。そういった意味でもIIfではなくIfを使うべきです。
1行でIf文を書く[C#]
閑話休題
では、C#ではIF文を1行で書くにはどうするのか。
(isHoge) ? "真" : "偽";
うーん。まだC#のお作法には慣れません・・・。