C#メモ

http://www.divakk.co.jp/aoyagi/csharp_tips_using.html

そもそも俺はtry{}catch{}が好きではない。なぜかって、入れる時に厳密にチェックかければ起き得ない事を想定する構文じゃん。
え?ハードウェア上の問題でそこでExceptionが起きたら?データクラッシュするだろ?
ハードの問題までプログラマがケアする事すか?ネットワークが不安定だからプログラム上で何とかしますか?
俺はそうは思いません。それは【仕方の無い事】ですよ。

とは言っても、これは突貫工事の時の話。
そのシチュエーションに対応する事へのコストとして、try{}catch{}はコスト高の気がする。

で、先にあげたURLをごらんくだちゃいな。
usingってもんがあるとですよ。これを使うと try{}finally{}を自動生成してくれるわけで、オルテガ文法(tyr{}catch{}での分岐)はないけど、クリティカルエラーを回避してくれるって訳。
んだから、たとえばIO系のクラスにはDispose()を必ず定義して、ここで全て破棄しちゃえば良い良い。
そうすれば(アプリレベルでの)デッドロックは起きえないのだ!

というわけで、突貫の時はこれをがんがん使いましょうって言うか使え。
# 最大の利点は、using構文の中にtry{}catch{}を書けること。つまりリファクタリングを想定してるわけですよ。
# アジャイル開発万歳!オブジェクト設計開発は悪だ!悪!