C# の Using ブロックとは何ですか? また、なぜ使用する必要があるのですか? [重複] 質問する

C# の Using ブロックとは何ですか? また、なぜ使用する必要があるのですか? [重複] 質問する

C# のブロックの目的は何ですかUsing? ローカル変数とどう違うのですか?

ベストアンサー1

型が IDisposable を実装している場合、その型は自動的に破棄されます。

与えられた条件:

public class SomeDisposableType : IDisposable
{
   ...implmentation details...
}

これらは同等です:

SomeDisposableType t = new SomeDisposableType();
try {
    OperateOnType(t);
}
finally {
    if (t != null) {
        ((IDisposable)t).Dispose();
    }
}
using (SomeDisposableType u = new SomeDisposableType()) {
    OperateOnType(u);
}

2 番目は読みやすく、保守も簡単です。


C# 8以降では新しい構文usingこうすることで、より読みやすいコードになるかもしれません:

using var x = new SomeDisposableType();

独自のブロックはなく{ }、using のスコープは宣言の時点から宣言されているブロックの終わりまでです。つまり、次のようなことを回避できます。

string x = null;
using(var someReader = ...)
{
  x = someReader.Read();
}

そして、これを持ってください:

using var someReader = ...;
string x = someReader.Read();

おすすめ記事