一尘不染

您是否需要处置对象并将其设置为null?

c#

您是否需要处理对象并将其设置为null,还是当垃圾回收器超出范围时将其清理?


阅读 229

收藏
2020-05-19

共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();
    }
}
2020-05-19