我的問題相當簡單:如果實現IDisposable
的類具有也是一次性的字段,那麼處置該實例是否也會處理字段值?一次性類的一次性字段是自動處理的
例子:
說我有一個類,OuterDisposable
,其中有一個領域innerDisposable
,誰的類型是另一種一次性類:
public class OuterDisposable : IDisposable
{
private InnerDisposable innerDisposable;
}
我打算換的OuterDisposable
所有實例using
聲明,以便它們自動安全地處置:
using (var outerDisposable = new OuterDisposable())
{
// Stuff
}
但是,我不確定一旦達到using
的末端,innerDisposable
會發生什麼情況。正確處置它是非常重要的,所以我需要確定行爲是什麼。
我相信明確處置innerDisposable
會實現我想要的結果:
public void Dispose()
{
this.innerDisposable.Dispose();
}
但是這個必要嗎?如果外部using
聲明處理innerDisposable
以及outerDisposable
,那麼它是多餘的。
那麼,如何處理這種一次性領域?
不,'OuterDisposable.Dispose'方法必須照顧它,'using'只是確保'Dispose'被調用。 –
包裝'IDisposable'類的'using'只調用'IDisposable'的Dispose'函數,它不檢查IDisposable屬性的對象屬性,所以你的假設是正確的 – bradbury9
你可以很容易地檢查只要在inner的dispose方法中加入某種調試語句即可。 – Chris