使用的目的是什么?

时间:2009-02-18 14:51:03

标签: .net using-statement

DUPE:Uses of "using" in C#

我见过人们使用以下内容,我想知道它的目的是什么? 这样对象在被垃圾收集使用后会被销毁吗?

示例:

using (Something mySomething = new Something()) {
  mySomething.someProp = "Hey";
}

6 个答案:

答案 0 :(得分:6)

大致使用翻译:

Something mySomething = new Something();
try
{
  something.someProp = "Hey";
}
finally
{
  if(mySomething != null)
  {
    mySomething.Dispose();
  }
}

这就是它。目的是支持确定性处理,这是C#没有的东西,因为它是垃圾收集语言。 using / Disposal模式为程序员提供了一种方法,可以准确指定类型何时清理其资源。

答案 1 :(得分:4)

using语句确保即使在对象上调用方法时发生异常,也会调用Dispose()。

答案 2 :(得分:2)

使用语句具有在完成使用块时处理()中的任何内容的有益效果。

答案 3 :(得分:2)

Something类实现using时,您可以使用IDisposable。即使您在using块中遇到异常,它也可确保正确放置对象。

即,您不必手动处理潜在的异常只是为了调用Disposeusing块会自动为您执行此操作。

相当于:

Something mySomething = new Something();
try
{
   // this is what's inside your using block
}
finally
{
    if (mySomething != null)
    {
        mySomething.Dispose();
    }
}

答案 4 :(得分:1)

使用获取翻译成

try
{
   ...
}
finally
{
   myObj.Dispose();
}

编译时(所以在IL中)。

所以基本上你应该将它与每个实现IDisposable的对象一起使用。

答案 5 :(得分:0)

'using'块是一种保证在退出块时调用对象的'dispose'方法的方法。

这很有用,因为您可能会正常退出该块,因为您已经退出,或者因为异常而退出该块。

你可以用'try / finally'做同样的事情,但'using'会让你更清楚你的意思,并且不需要在块之外声明的变量。