【问题标题】:Do I need to null out an object reference in C# before the method ends? [duplicate]在方法结束之前,我是否需要在 C# 中清空对象引用? [复制]
【发布时间】:2018-12-18 17:27:32
【问题描述】:

我是 C# 的新手,似乎找不到直接的答案:

所以在一个方法中,我创建了一个对象引用来读取一个 xml 文档:

XElement xFinancialBill = xDoc.Root.Element("Financial_Transaction").Element("Bill");

它对对象进行一些处理并且方法结束,但我的问题是:我是否需要在方法结束之前清空上述对象引用(例如xFinancialBill = null;)以进行垃圾收集/释放内存以工作正确吗?

【问题讨论】:

  • 不,一旦变量超出范围并且没有在其他任何地方引用,垃圾收集器就会处理它。

标签: c# memory collections null garbage


【解决方案1】:

通常,一旦对象引用超出范围,您就无需担心它们 - 垃圾收集器会清理干净。

但是,如果您使用的对象的类实现了 IDisposable 接口,那么您需要通过显式调用 IDisposable.Dispose() 方法或将其用法包装在 @987654323 中来确保它处理所有非托管资源@块。

在 MSDN 中查找 IDisposable 以获得进一步的解释。

【讨论】:

  • 感谢您的回答!
【解决方案2】:

没有。垃圾收集器将释放所有不再可访问的对象,并且已完成方法的局部变量属于此类别(前提是您没有其他引用,例如因为您返回了值或将其存储在成员字段中等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    相关资源
    最近更新 更多