using しないとメモリリークするとか良く分からない思い込みを最近までしていた。単純にリソース(ファイルとか)の解放を楽に書くってのがusingだったのね。
↓で書いた、場合
using (StreamWriter writer = new StreamWriter(Path.Combine(fileFolder, wkFileName), true, sjisEnc)) { writer.WriteLine("HOGE FUGA"); }
コンパイラで↓の感じに展開するってだけの話だったのか。
{ StreamWriter writer = new StreamWriter(Path.Combine(fileFolder, wkFileName), true, sjisEnc); try { writer.WriteLine("HOGE FUGA"); } finally { if (writer != null) ((IDisposable)writer).Dispose(); } }
確かに昔(大昔)はfinallyでdispose()呼ぶコード書いてた。それをusingのブロック書くだけで肩代わりするよって話なのね。
てか、 MSDNのココに普通に書いてあるし。やっぱブログとかうだうだ見るよりMSDNを最初に見ないとだめですね。