tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

C#の空文(empty ステートメント)

if ( SomeCondition1() )
  message = "some condition 1だよ〜ん"; //本当はマジメな文
else if ( SomeCondition2() )
  ; //何もしない
else
  message = "else だよ〜ん"; //本当はマジメな文
//...

みたいなコードを書いたらコンパイラに怒られた。(警告)。調べると、どうもこういうことらしい(↓)
コンパイラの警告 (レベル 3) CS0642 (C#)

条件付きステートメントの後にセミコロン (;) があると、コードが予測どおりに実行されないことがあります。

うーん、確かにそのとおりなんだけどね。。。

/nowarn コンパイラ オプションまたは #pragmas warning を使用すると、この警告を無効にできます。

いや、大仰すぎだから。そこまでしてまで、警告の抑止したくないから。lint の Lint コメントみたいな簡単な書き方で抑止できればいいんだけどねぇ。。。(せめて perl の「no warnings」くらいの簡便さが欲しい)。

え?どうやって、対処したかって?

if ( SomeCondition1() )
  message = "some condition 1だよ〜ん"; //本当はマジメな文
else if ( SomeCondition2() )
  DoNothing();
else
  message = "else だよ〜ん"; //本当はマジメな文
//...
private void DoNothing(){} //何もしない

DoNothing() っていう、「本当に何もしない関数」を呼ぶ処理を入れました。うーん、ダサい。