デバッグの為のコーディング

ヌル許容型を使えば、以下のようなコードが書けると思ってたんですが、これだとコンパイル出来ないんですね。

bool? flg;
if (flg) { }

これで、flgがヌルだったら、ヌル参照の例外が発生してくれることを期待してたのですが…
キャストしたりすればいいんですけど、そうするとプリプロセッサで変数の定義だけヌル許容型に切り替えただけではダメなので…

結局、フラグが無効な状態であることを示す変数を追加しました。
それで、フラグ変数をデバッグビルドではプロパティとして定義して、その中でフラグが無効な状態になっていないかチェックして、無効だったら例外を投げるようにしました。

これで、最適化バグを簡単に発見できるようになりました。

あと、ログ出力の件は、普通にBufferedStreamを間にかますだけで十分速くなりました。