您是否需要处理对象并将它们设置为 null,或者当它们超出范围时垃圾收集器是否会清理它们?
当不再使用对象并且垃圾收集器认为合适时,它们将被清理。有时,您可能需要将对象设置为null以使其超出范围(例如您不再需要其值的静态字段),但总体而言通常不需要设置为null.
null
关于处置对象,我同意@Andre。如果对象是IDisposable, 最好 在不再需要时将其释放,尤其是在对象使用非托管资源时。不处置非托管资源将 导致内存泄漏 。
IDisposable
一旦您的程序离开该语句的范围,您就可以使用该using语句自动释放对象using。
using
using (MyIDisposableObject obj = new MyIDisposableObject()) { // use the object here } // the object is disposed here
这在功能上等同于:
MyIDisposableObject obj; try { obj = new MyIDisposableObject(); } finally { if (obj != null) { ((IDisposable)obj).Dispose(); } }