使用“使用”语句进行处置

时间:2010-08-04 07:34:31

标签: c# .net

这有意义吗?

有一个简单的课程

   class Test
   {
     public Test()
     {
        // Do whatever
     }
   }

然后实例化

using(new Test())
{
  // Nothing in here
}

using语句只是为了确保处理Test。 如果我打电话

什么时候会被处理掉
new Test()

3 个答案:

答案 0 :(得分:11)

Test不是IDisposable,因此甚至不会编译。但如果 是一次性的,那么using会这样做,而new本身将不会。这是不寻常的用法,但我见过类似的。很少。

根据您的评论(主要问题),我怀疑您混淆了垃圾收集和处置。没有办法强制收集某些内容,而不是GC(你应该这样做)。除非你有真的有理由想要收集它,否则就让它成为 - 很可能是“第0代”,并且无论如何都会廉价收集。

此外,“做任何事情”建议在构造函数中执行但不关心创建的对象;静态方法更可取:

public class Test { /* could be static */
     public static void DoSomething() { ... }
}
...
Test.DoSomething();

答案 1 :(得分:2)

通过不将实例分配给变量,只要它超出范围,它就有资格获得GC。

或者,你还有什么想要用这个来完成的吗?

答案 2 :(得分:0)