C#のusing(~とIDisposable 

C#のソースにusing( ・・・ ){ 処理 } と書いてあるところの意味がわかってなかったため、戒めにメモ。

使い終わったリソースを必ず開放する必要がある時に、try~catch、try~catch・・・の嵐になりそうなところを、usingブロックを使ってそれなりにすっきりコーディングできるようにしたものらしい。

以下の2つの処理は全く同じ意味になるとのこと。

usingブロックの方は、自動的にDispose()を呼び出してくれ、しかも、例外にも対応してくれるものとのこと。

public void Func() {
    FileStream fs = new FileStream("test.txt", FileMode.Read);
    try {
        StreamReader sr = new StreamReader(fs);
        try {
            // 処理する
        }
        finally {
            if (sr != null) {
                sr.Dispose();
            }
        }
    }
    finally {
        if (fs != null) {
            fs.Dispose();
        }
    }
}
public void Func() {
    using (FileStream fs = new FileStream("test.txt", FileMode.Read)) {
        using (StreamReader sr = new StreamReader(fs)) {
            // 処理する
        }
    }
}

参考:ここここ