2010-04-28 48 views

回答

2

.NET中的Garbage Collector将为您做到!但实际上,它可能取决于你在写“你不需要”变量时的意思

11

你没有。只要让引用超出范围,它就会自动变为garbage-collected

1

.NET有一个内置的垃圾收集器。在不需要的时候停止引用数组或变量就足够了。不需要明确的销毁电话。

5

在.NET或为此事你只需释放你持有到该对象的所有引用任何垃圾回收的语言,垃圾收集器将最终收集它例如:

int[] arr = new int[20]; 
    .... 
    // when no longer needed set all references to null 
    arr = null; 
    // also creating a new object will release the old one automatically if there are no more references to it 
    arr = new int[40]; // old array will be garbage collected 

另外请注意,你不这样做只有当你明确地想释放一个对象而不释放它的父对象或者如果引用是一个静态字段时,每次都需要这样做。对于只有局部(方法)变量的类或静态字段的字段,也不需要释放对象。

+0

非常感谢你! – Alexry 2010-04-28 07:31:13

+2

请注意,您不需要将引用设置为'null' - JIT/Runtime将共同确定代码将不再使用该引用的位置;在那个时候它已经死亡并且可以收回。 Google针对MSDN博客上的'GC.KeepAlive()'描述以及SO的详细信息。 – 2010-04-28 07:52:27

+1

@亚历山大,您的欢迎,也就像@迈克尔伯尔所说,它在* .Net中非常罕见*,需要手动清空变量,您通常不需要这样做。 – 2010-04-28 07:54:57

1

垃圾收集器是要命的,但是当垃圾收集器收集的对象不再被引用的对象被有效破坏:后... 所以,如果你需要处理的immediateli对象,以便自毁代码被称为,您需要实施IDisposable接口,并在解除引用对象之前调用Dispose方法。