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)) { // 処理する } } }
返信
コメントを投稿するにはログインしてください。