Dispose中的成员变量访问权限

时间:2012-06-28 18:56:50

标签: c# dispose

我正在尝试了解有关Dispose方法的更多信息,以及此过程中发生的事情可能会阻止此对象的垃圾收集。

所以,如果我有:

DateTime _date = DateTime.UtcNow;

public void Dispose()
{
   bool append = true;
   using(var log = new System.IO.StreamWriter("log.txt", append))
   {
       log.WriteLine("Logged on: " + _date);
   }
}

我在Dispose方法中调用_date会重新生成变量并且不允许GC收集它吗?

这是从我的问题here开始的。

2 个答案:

答案 0 :(得分:5)

垃圾收集器对Dispose() 没有任何,所以简单的答案是:完全没有。 GC涉及终结器(~YourType()),但 Dispose(),除非您指的是常见的Dispose(bool disposing) {...}模式。

其次,DateTimestruct,因此不会被垃圾收集。

答案 1 :(得分:2)

绝对不是。 Dispose与垃圾收集基本上没有关系(除了许多实现会调用GC.SuppressFinalize(this)这一事实。)

dispose模式允许对象的使用者礼貌,并尽快释放非托管资源。垃圾收集是适当时释放托管资源的标准方法。

某些一次性类实现终结器,这样如果收集对象而不进行处理,则可能会发生紧急释放非托管资源。