Dot-Net

.NET 對像生命週期是什麼?

  • July 29, 2014

.NET 中對象的對像生命週期是什麼?

據我了解是:

  1. 創建的對象 - 呼叫建構子(如果存在)
  2. 使用的方法/屬性/欄位
  3. 對像已銷毀 - 呼叫 Dispose(如果存在)
  4. GC 在某個時候呼叫的解構子

Dispose 不會被自動呼叫;您需要呼叫它,或使用 using 塊,例如。

using(Stream s = File.OpenRead(@"c:\temp\somefile.txt"))
   // Do something with s

終結器僅在存在時才被 GC 呼叫。擁有終結器會使您的課程分兩步被收集;首先將對象放入終結器隊列,然後呼叫終結器並收集對象。直接收集沒有終結器的對象。

指導方針是 Dispose 擺脫託管和非託管資源,終結器僅清理非託管資源。當 Dispose 方法釋放了非託管資源時,它可以呼叫 GC.SuppressFinalize 以避免對象長期存在以放入終結器隊列中。有關處置模式的正確範例,請參閱MSDN

引用自:https://stackoverflow.com/questions/995408