リソースを使うStreamクラスの開放し忘れに注意

だんだん自分用のメモ化してきました。


ネットを検索しているとすぐにサンプルコードを見つけることができますが、Dispose()メソッドが抜けていることがあるので注意です。


リソースを使用するStreamではCloseメソッドを呼び出すだけではだめで、
Disposeメソッドを呼び出さないとリソースが開放されず、プログラムが終了するまで操作できなくなる場合があります。


たとえば、FileStreamクラスでは、Dispose()が呼ばれないとプログラムが終了するまでファイルをすくなくとも消すことができなくなります。



↓こんな感じになってます

var fs = System.IO.File.OpenRead(@"hoge.dat");
/* なにか処理 */
fs.Close();


正しくは次のように using を使います。

using(var fs = System.IO.File.OpenRead(@"hoge.dat"))
{
  /* 何か処理 */
  fs.Close();
}

どうでもいい話

C# 3.0 から推論機構のおかげで初期化を伴う変数宣言ではvarで宣言できるため、とてもコードを書くのが楽になってうれしいです。
なので、見る側には迷惑かもしれませんが、varつかいまくりなサンプルばっかりになってます。
# たまに使えないところで使ってる可能性もある恐れが・・・