c#中Using块的目的是什么?它和局部变量有什么不同?


当前回答

它实际上只是一些语法糖,不需要对实现IDisposable的成员显式调用Dispose。

其他回答

它实际上只是一些语法糖,不需要对实现IDisposable的成员显式调用Dispose。

using语句用于处理c#中实现IDisposable接口的对象。

IDisposable接口有一个名为Dispose的公共方法,用于释放对象。当我们使用using语句时,我们不需要在代码中显式地处理对象,using语句会处理它。

using (SqlConnection conn = new SqlConnection())
{

}

当我们使用上面的代码块时,内部生成的代码是这样的:

SqlConnection conn = new SqlConnection() 
try
{

}
finally
{
    // calls the dispose method of the conn object
}

更多细节请阅读:理解c#中的“using”语句。

在using块中放置代码可以确保一旦控件离开块,对象就会被处理(尽管不一定会被收集)。

using (B a = new B())
{
   DoSomethingWith(a);
}

等于

B a = new B();
try
{
  DoSomethingWith(a);
}
finally
{
   ((IDisposable)a).Dispose();
}

using语句获取一个或多个资源,执行一条语句,然后处置资源。