日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[分享]另一种对 IDisposable 的实现

發布時間:2024/4/14 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [分享]另一种对 IDisposable 的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相比于剛發出來沒多久的關于 MVVM 的文章,對 IDisposable 接口的討論更是老生常談了。

詳細講解 IDisposable 的文章也有很多,不想深入了解的看了會頭暈,想深入了解的估計也早就了解過了。

所以本文不講那么多大道理,實用為主,一切從簡。

正文

實際上,不管和大家一起討論過多少次,不管用過多少次,每次再使用 IDisposable 的時候總還是會有點犯迷糊,會懷疑自己實現得到底對不對。

久而久之,對 IDisposable 的實現就產生了一個模板,緊接著模板便理所當然地成了一個抽象類:

public abstract class DisposableObject: IDisposable{protected DisposableObject(){IsDisposed = false;}public bool IsDisposed { get; private set; }protected abstract void Dispose(bool disposing);public void Dispose(){if (IsDisposed) return;Dispose(true);IsDisposed = true;GC.SuppressFinalize(this);}~DisposableObject(){Dispose(false);}}

實現 IDisposable 的時候只要派生自這個抽象類再覆蓋?void Dispose(bool disposing) 這個方法就好了。

需要注意的地方則是:

1、只有當 disposing 的值為 true 時需要改變向外暴露的狀態信息,通常來說都是值類型的屬性,而當 disposing 為 false 的時候不需要這么做;

2、在 Dispose 方法中只需要釋放那些未被封裝成托管對象的資源,例如通過 IntPtr 操作的系統對象,而實現了 IDisposable 的對象則不需要在此處進行釋放,因為它們同樣也實現了 Finalizer。

轉載于:https://www.cnblogs.com/NanaLich/archive/2013/01/04/yet-another-implementation-of-idisposable.html

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的[分享]另一种对 IDisposable 的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。