2016-04-28 76 views

回答

1

发生在幕后它可以是任何的,或根本没有。

如果默认构造函数和Dispose方法没有副作用,并且编译器可以看到它,那么它可以完全跳过代码生成,因为整个事物都是无操作的。

另外,如果只有Dispose方法是无操作,那么GC可能只是这一行后收集的对象:

Employee obj = new Employee(); 

或者,如果GC能够证明对象永远不会再次读取Disposeeven if it's still in scope)之后,它可能只是该行后收集的对象:

obj.Dispose(); 

或者,如果GC不能证明任何的这些,可能这行后做的任何时间:

obj = null; 

备选地,如果GC没有看到任何压力的程序的整个执行过程中回收存储器,it might not collect the object at all