一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

C#資源釋放及Dispose、Close和析構(gòu)方法

  在開始本文前,需要一些準(zhǔn)備知識。首先要提出“什么是資源”。在CLR出來之后,Windows系統(tǒng)資源開始分為“非托管資源”和“托管資源”。非托管資源是指:所有的Window內(nèi)核對象(句柄)都是非托管資源,如對于Stream,數(shù)據(jù)庫連接,GDI+的相關(guān)對象,還有Com對象等等,這些資源并不是受到CLR管理;托管資源是指:由CLR管理分配和釋放的資源,即由CLR里new出來的對象。

  其次再來講,資源的釋放方式。非托管資源:需要顯式釋放的,也即需要你寫代碼釋放;托管資源:并不需要顯式釋放,但是如果引用類型本身含有非托管資源,則需要進行現(xiàn)實釋放;顯式釋放的C#實現(xiàn),由C#語法支持的有:

         1:實現(xiàn)IDisposable接口的Dispose方法;

         2:析構(gòu)方法(終結(jié)器);

         不由C#語法支持,但是約定支持的顯式釋放是:

         3:提供Close方法;

  但是,還需要區(qū)分這3種方式的異同點。首先,你無法調(diào)用析構(gòu)方法。析構(gòu)方法是由垃圾回收機制進行調(diào)用的。換句話來說,就是你不知道析構(gòu)方法被調(diào)用的時機。嚴(yán)格意義上來說,它只是作為資源釋放的一個補救措施。資源釋放的一個正確的措施是為類型實現(xiàn)IDisposable接口的Dispose。當(dāng)你需要釋放類型的資源的時候,應(yīng)該顯示的調(diào)用Dipose方法。當(dāng)然,這里還有一個C#的語法糖,就是使用using程序塊,在離開using程序塊的時候,CLR會自動調(diào)用類型所創(chuàng)建對象的Dipose方法。

  可能有人會問道,既然可以通過Dispose方法的方式來進行資源的釋放,為什么有些類型還需要提供一個Close方法。這里面的區(qū)別,或者說約定在于,如果你仔細觀察這些類型:他們基本都只公開了Close方法,他們都實現(xiàn)了IDisposable,但都隱藏了Dispose方法。以Socket這個類為例,它:

1:提供public void Close()

    public void Close()

{
….
((IDisposable)
this).Dispose();
….
}

NET技術(shù)C#資源釋放及Dispose、Close和析構(gòu)方法,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 黄页网站在线播放 | 亚洲资源在线观看 | 国产黄色免费在线观看 | 国产麻豆91在线 | 夜夜未满 18勿进的爽影院 | 四虎国产精品免费久久久 | 中文字幕一区二区三区乱码 | 韩国一级毛片a级免观看 | 丁香花五月婷婷开心 | 亚洲欧美成人综合久久久 | 韩国一级片免费 | 一区二区视频在线观看高清视频在线 | 国产亚洲精品拍拍拍拍拍 | 亚洲小说欧美激情另类 | 国产精品400部自产在线观看 | 六月激情 | 麻豆久久| 国产白白视频在线观看2 | 亚洲视频在线免费播放 | 美国一级做a爰片性色毛片 美国一区二区三区 | 欧美系列第一页 | 四虎影视免费永久在线观看黄 | 好吊操这里只有 | vr专区日韩精品中文字幕 | 久青草国产手机视频免费观看 | 95视频在线观看在线分类h片 | 91大奶| 欧美在线一二三区 | 成人永久福利免费观看 | 美女一级ba大片免色野外 | 亚洲国产成人99精品激情在线 | 亚洲综合激情另类小说区 | 国产福利小视频高清在线观看 | 亚洲综合国产 | 欧美性一交激情视频在线 | a一级一色一情 | 婷婷影院在线观看 | 夭天色综合 | 在线观看国产区 | 国产青草视频在线观看 | 国产精品 视频一区 二区三区 |