c# - 我可以在只读对象字段后安全地清理吗?

标签 c# readonly dispose

假设我有一个带有对象字段的类。当调用 Dispose() 时,我想清除对该对象的引用。私有(private)字段只能设置一次,所以理想情况下我希望它是只读的,但如果它是只读的,当我尝试在 Dispose() 期间释放对对象的引用时会出现编译时错误。理想情况下,我希望安全处置并将 _value 字段标记为只读。这可能甚至是必要的吗?

public class Foo : IDisposable
{
      public Foo(object value)
      {
            _value = value;
      }

      public object Value { get { return _value; } }
      private readonly object _value;

      public void Dispose()
      {
            //Cleanup here
            _value = null     // causes compile time error
      }
}

最佳答案

即使有可能,也没有必要。

Dispose 通常用于清理非托管资源,尽管该规则可能存在异常(exception)情况(请注意注释)。然而,在这种情况下,您应该让垃圾收集器完成它的工作。一旦对象被认为没有事件根,它将不确定地运行。一般情况下,您不需要采取行动强制执行。只需在适当限制的范围内使用对象编写代码就可以了。

关于c# - 我可以在只读对象字段后安全地清理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3993533/

相关文章:

c# - FedEx express 服务

c# - 当子对象为 null 时,访问另一个对象中包含的对象中的变量

c# - 以非只读方式打开只读文件并保存/覆盖

.net - 我需要处理任务吗?

c# - 如何处理可能需要很长时间才能启动的启动/停止API接口(interface)

LLVM API : correct way to create/dispose

c# - 为什么 ArrayList 没有被标记为 [Obsolete]?

c# - 为什么这个 Debug.Assert 会被跳过?

c# - 有没有办法让抽象类中的静态只读字段在派生类中实例化?

c# - 如何在 C# 中创建可私有(private)设置的只读结构(例如 Size)?