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

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

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

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

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

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

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

         3:提供Close方法;

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

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

1:提供public void Close()

    public void Close()

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

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

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

主站蜘蛛池模板: 黄色在线观看视频 | 亚洲永久免费网站 | 五月婷婷六月丁香综合 | 偷偷狠狠的日日2020 | 色视在线| 国内精品小视频福利网址 | 青青草久热精品视频在线观看 | 激情视频网址 | 91po国产在线高清福利 | 国内xxxx乱子另类 | 色视频免费 | 男人女人的免费视频网站 | 国产在线一区二区 | 中文字幕一区婷婷久久 | 欧美人与禽 | 国产综合91天堂亚洲国产 | 精品欧美一区二区三区在线观看 | 综合五月天堂 | 久久国产精品网 | 五月四房播 | 玖玖在线精品 | 精品无码一区在线观看 | 一二三区视频 | 韩国久久 | 精品久久久久久国产91 | 久久成人永久免费播放 | 日本高清在线精品一区二区三区 | 加勒比一本大道香蕉在线视频 | 永久免费精品影视网站 | 免费视频国产 | 午夜激情网站 | 国产一区二区中文字幕 | 国产成人国产在线观看入口 | swag精品 | 色综合天天干 | 91麻豆国产自产 | 亚洲成在人线中文字幕 | 碰碰人人 | 五月婷婷六月丁香在线 | 五月婷婷综合在线 | 日本一区深夜影院深a |