7

このステートメントは C# で何を意味しますか?

        using (object obj = new object())
        {
            //random stuff
        }
4

5 に答える 5

12

これは、obj実装され、ブロックIDisposibleの後に適切に破棄されることを意味します。using機能的には次のものと同じです。

{
  //Assumes SomeObject implements IDisposable
  SomeObject obj = new SomeObject();
  try
  {
    // Do more stuff here.       
  }
  finally
  { 
    if (obj != null)
    {
      ((IDisposable)obj).Dispose();
    }
  }
}
于 2010-01-12T18:41:20.360 に答える
5
using (object obj = new object())
{
    //random stuff
}

以下と同等です。

object obj = new object();
try 
{
    // random stuff
}
finally {
   ((IDisposable)obj).Dispose();
}
于 2010-01-12T18:43:01.073 に答える
1

なぜそれが存在するのですか。

特に、クラスが OS でリソースをラップしていて、すぐに解放したい場合に、クラスの寿命を気にするクラスのために存在します。それ以外の場合は、CLR の (非決定論的) ファイナライザーを待つ必要があります。

例、ファイル ハンドル、DB 接続、ソケット接続、....

于 2010-01-12T18:46:12.520 に答える
0

オブジェクトのスコープを設定する方法であるため、終了時に dispose メソッドが呼び出されます。特にデータベース接続に非常に役立ちます。オブジェクトが idisposable を実装していない場合、コンパイル時エラーが発生します。

于 2010-01-12T18:43:53.490 に答える
0

usingブロックで未処理の例外が発生した場合でも、割り当てられたオブジェクトが using ブロックの後に適切に破棄されるようにします。

于 2010-01-12T18:44:17.863 に答える