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

为什么它存在。

它存在于您关心其生命周期的类,特别是当类在操作系统中包装资源并且您希望立即释放它时。否则,您将不得不等待 CLR 的(非确定性)终结器。

示例,文件句柄,数据库连接,套接字连接,......

于 2010-01-12T18:46:12.520 回答
0

这是一种限定对象范围的方法,因此在退出时调用 dispose 方法。特别是对于数据库连接非常有用。如果对象没有实现 idisposable 则会发生编译时错误

于 2010-01-12T18:43:53.490 回答
0

using确保分配的对象在 using 块之后被正确处理,即使在块中发生未处理的异常时也是如此。

于 2010-01-12T18:44:17.863 回答