簡體   English   中英

使用IDisposable優於在C#類終結器中執行操作的優勢

[英]Advantage of using IDisposable over performing actions in C# class finalizer

討論“模式化”是實現和使用IDisposable / Dispose的問題有很多,但是與在C#類finilizer中擁有所有清理代碼相比,它有什么優勢?

確保其他類可以在該類實例被垃圾回收並調用finilizer之前更早地調用Dispose。 是唯一的嗎?

您無法保證何時或什至將調用終結器(析構函數)。

因此,為了及時清理資源(文件,Db連接),Dispose模式至關重要。

使IDisposable避免析構函數。 析構函數的問題在於,您永遠不知道何時調用它們,而帶有析構函數的對象始終是最后要清理的對象。

使用IDisposable可以通知班級的用戶他們應該使用using-method方法。 例如:

using(MyClass myClass = new MyClass())
{
    // Do something with MyClass.
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM