1. ホーム
  2. c#

[解決済み】C#のUsingブロックとは何ですか、そしてなぜそれを使うべきなのですか?[重複している]

2022-03-30 04:57:27

質問

の目的は何ですか? Using ブロックを作成しました。ローカル変数とどう違うのですか?

どのように解決するのですか?

型が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();