ブレンダン・エンリックのブログより:-
今日、いくつかのコードを書いているときに、using ステートメント内から戻る必要がありました。このようなことをしていると、いつも using ステートメントとその素晴らしさに感謝するので、ここでそれについて書くことにしました。多くの人が知っているように、C# の using ステートメントは、アンマネージ リソースにアクセスする型を管理するための優れたツールです。これらの例としては、SqlConnections、FileReaders、および他の多くの同様のタイプがあります。これらの鍵は、それらすべてが IDisposable インターフェイスを実装していることです。これは、それらを使用した後、すべてを慎重にクリーンアップする必要があることを意味します。
using ステートメントは、実行がどのように完了しても、宣言されたオブジェクトが破棄されることを保証するため、優れています。using ステートメント、throw と例外、または関数からの戻りの終了を示す終了中かっこに到達した場合でも、using ステートメントは dispose メソッドを呼び出し、オブジェクトをクリーンアップします。
dispose メソッドが起動するかどうかを気にすることなく、using ステートメント内から直接戻ることができたので、これは私のコードでは重要でした。管理されていないリソースにアクセスするオブジェクトを使用するときはいつでも、常にそれを using ステートメントに入れます。
オブジェクトが正しく破棄されることが保証されるため、using ステートメントを使用することは非常に重要です。オブジェクトのスコープは using ステートメントの範囲になります。オブジェクトのスコープ中は、using ステートメントで定義されている場合は読み取り専用になります。アンマネージドを管理するこの重要なオブジェクトが変更または再割り当てされるのを防ぐため、これも非常に優れています。
using ステートメントが優れているため、これは安全に実行できます。どのリターンをヒットしても、XmlReader が正しく破棄されることがわかります。
using (XmlReader reader = XmlReader.Create(xmlPath))
{
// ... Do some work...
if (someCase)
return 0;
// ... Do some work...
if (someOtherCase)
return 1;
}
return -1;
彼のもう 1 つのブログでは、実際の例を示しています。