1

我正在尝试了解有关 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 收集它?

这是从我的问题开始的

4

2 回答 2

5

垃圾收集器与没有任何关系Dispose(),所以简单的答案是:根本没有。GC 涉及终结器 ( ~YourType()),但 Dispose()涉及,除非您指的是通用Dispose(bool disposing) {...}模式。

其次, aDateTime是 a struct,因此不会被垃圾收集。

于 2012-06-28T18:58:30.727 回答
2

绝对不。Dispose 本质上与垃圾收集无关(除了许多实现会调用GC.SuppressFinalize(this).)

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

一些一次性类将实现一个终结器,以便如果对象在没有被释放的情况下被收集,则可能会紧急释放非托管资源。

于 2012-06-28T18:59:35.163 回答