天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

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

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

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

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

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

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

         3:提供Close方法;

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

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

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)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 97午夜理论片影院在线播放 | 亚洲视频成人 | av在线色| 国产毛片女人高潮叫声 | 浪荡女天天不停挨CAO日常视 | 国产国拍亚洲精品永久软件 | 国产成人精品在视频 | 色综合久久综合网观看 | 亚洲精品无码专区在线播放 | 经典三级四虎在线观看 | 伊人久久网站 | CHINA末成年VIDEO学生 | 啪啪羞羞GIF男女0OXX动态图 | 寻找最美乡村教师颁奖晚会 | WWW亚洲精品久久久乳 | 啊灬啊别停灬用力啊在线观看视频 | 色女仆影院| 夜夜狂射影院欧美极品 | 97无码人妻精品1国产精东影业 | 蜜臀亚洲AV永久无码精品老司机 | gv肉片视频免费观看 | 久亚洲AV无码专区A片 | WWW污污污抽搐喷潮COM | 欧美日韩中文国产一区发布 | 最近中文字幕免费高清MV视频6 | 午夜AV内射一区二区三区红桃视 | 影视先锋男人无码在线 | 国产精品A8198V久久A片 | 日本熟妇乱妇熟色A片蜜桃亚洲 | 免费A级毛片无码无遮挡 | 同桌上课把奶露出来给我玩 | 漂亮的保姆6在线观看中文 漂亮的保姆5电影免费观看完整版中文 | 国产在线精品亚洲视频在线 | 久久re热在线视频精6 | 99re热视频这里只有精品 | 全身无赤裸裸美女网站 | 久久青草影院 | 国产系列视频二区 | 国产麻豆福利AV在线观看 | 伊人网青青草 | 日本无码毛片一区二区手机看 |