Disposeとは?
Dispose()は、使い終わったリソースを明示的に解放するためのメソッドです。
C#では、ファイル・ネットワーク接続・データベースなど、
メモリ以外の“外部資源”を使うことがあります。
こういったリソースはガベージコレクタ(GC)では自動で片付けてくれません。
そのため、自分で解放する必要があります。
例
var file = new StreamWriter("test.txt");
file.WriteLine("Hello!");
file.Dispose(); // ←手動で解放
このようにDispose()を呼ぶことで、
ファイルを閉じてリソースを開放します。
でも、もし途中で例外が発生したら、
Dispose()が呼ばれないままリソースが残ってしまいます
using構文とは?
そんなときに便利なのがusing構文です。
usingは、「ブロックを抜けたら自動でDisposeしてくれる」仕組みです。
例
using (var file = new StreamWriter("test.txt"))
{
file.WriteLine("Hello!");
} // ← ここで自動的にDispose()が呼ばれる!
これなら、途中で例外が起きても確実にリソースを解放してくれます。
つまり、usingはDispose()を安全・確実に呼ぶための構文なんです。
Disposeとusingの違い
項目 | Dispose | using |
---|---|---|
役割 | リソースを明示的に解放する | 自動でDisposeを呼ぶ構文 |
タイミング | 自分で呼ぶ必要あり | スコープを抜けた瞬間 |
安全性 | 例外が起きると呼ばれない可能性あり | 確実に呼ばれる |
実装対象 | IDisposableを実装したクラス | IDisposableを実装したオブジェクト |
まとめ
- Dispose()は「リソースを片付けるメソッド」
- usingは「Disposeを自動で呼ぶ仕組み」
- usingを使えば例外が起きても安全に後処理できる
普段のコードでは、Dispose()を直接呼ぶよりusingを使うのが基本です。