假设我有一个带有对象字段的类。调用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
      }
}

最佳答案

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

处置通常旨在清理非托管资源,尽管该规则可能会有异常(exception)(请注意注释)。但是,在这种情况下,应允许垃圾收集器完成其工作。一旦认为对象没有事件的根,它将无限期地运行。在正常情况下,您无需采取任何措施来强制执行此操作。只需在适当限制的范围内使用对象编写代码,就可以了。

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

10-14 16:39
查看更多