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