modest violet

読者です 読者をやめる 読者になる 読者になる

modest violet

開発者としてのあれこれや、日々の雑記など

your future hasn't written yet. no one's has.
by Emmett Lathrop "Doc" Brown

C#でIF文を1行で書く

C#でIF文を1行で書く方法が分からなかったので備忘録。。。すいません、VBユーザーだったもので。。。

1行でIf文を書く[VB]

VBならば特に何も考えずに、こういう書き方で可能です。

VB.NETの場合

    If(isHoge,"真","偽")

1行でIf文を書く[昔のVB]

ちなみに、VB2008より前はIIfという関数を使っていました。

    IIf(isHoge,"真","偽")

何が違うかと言いますと、大きくは2点あります。

  1. Ifはコンパイラによる型推論が行われる
  2. IIfは真・偽いずれかの結果に関わらず両方の条件が処理される

2.がどう言うことかと言いますと、

    IIf(hoge > 0, fuga / hoge , 0)

こういう条件式があった場合、0で割ると除算エラーになります。
ですので事前に0以上かどうかを判断するのですが、IIfの場合は判断前に、fuga / hogeが処理されてしまいます。判断式としての意味を成していません。そういった意味でもIIfではなくIfを使うべきです。

1行でIf文を書く[C#]

閑話休題

では、C#ではIF文を1行で書くにはどうするのか。

    (isHoge) ? "真" : "偽";

うーん。まだC#のお作法には慣れません・・・。