[英]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.