小编典典

您是否需要处理对象并将它们设置为空?

all

您是否需要处理对象并将它们设置为 null,或者当它们超出范围时垃圾收集器是否会清理它们?


阅读 69

收藏
2022-04-08

共1个答案

小编典典

当不再使用对象并且垃圾收集器认为合适时,它们将被清理。有时,您可能需要将对象设置为null以使其超出范围(例如您不再需要其值的静态字段),但总体而言通常不需要设置为null.

关于处置对象,我同意@Andre。如果对象是IDisposable最好
在不再需要时将其释放,尤其是在对象使用非托管资源时。不处置非托管资源将 导致内存泄漏

一旦您的程序离开该语句的范围,您就可以使用该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();
    }
}
2022-04-08