ベストアンサー1
このステートメントの理由は、using
オブジェクトがスコープ外になるとすぐに破棄されることを保証するためであり、これを保証する明示的なコードは必要ありません。
例えばC# の 'using' ステートメントを理解する (codeproject)そしてIDisposable を実装するオブジェクトの使用 (microsoft)C#コンパイラは、
using (MyResource myRes = new MyResource())
{
myRes.DoSomething();
}
に
{ // Limits scope of myRes
MyResource myRes= new MyResource();
try
{
myRes.DoSomething();
}
finally
{
// Check for a null resource.
if (myRes != null)
// Call the object's Dispose method.
((IDisposable)myRes).Dispose();
}
}
C# 8では「宣言の使用「:」
using 宣言は、using キーワードが先行する変数宣言です。これは、宣言されている変数を囲むスコープの最後に配置する必要があることをコンパイラに伝えます。
したがって、上記と同等のコードは次のようになります。
using var myRes = new MyResource();
myRes.DoSomething();
そして、制御が包含スコープ (通常はメソッドですが、コード ブロックの場合もあります) を離れると、myRes
破棄されます。