使用"使用"语句进行处置

Jla*_*Jla 9 .net c#

这有意义吗?

有一个简单的课程

   class Test
   {
     public Test()
     {
        // Do whatever
     }
   }
Run Code Online (Sandbox Code Playgroud)

然后实例化它

using(new Test())
{
  // Nothing in here
}
Run Code Online (Sandbox Code Playgroud)

using语句只是为了确保处理Test.如果我打电话,什么时候会被处理掉

new Test()
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 11

Test不是IDisposable,所以甚至不会编译.但如果它一次性的,肯定using会这样做,而且new它本身也不会.这是一种不寻常的用法,但我见过类似的.很少.

根据你的评论(主要问题),我怀疑你是混乱的垃圾收集和处置.没有办法强行收集东西,缺少GC(你不应该这样做).除非你有一个真正好的理由要收集它,就让它是-没准它是"一代0",将廉价反正被收集.

此外,"做什么"建议一些在构造函数中,但不关心创建的对象; 静态方法更可取:

public class Test { /* could be static */
     public static void DoSomething() { ... }
}
...
Test.DoSomething();
Run Code Online (Sandbox Code Playgroud)