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

C#資源釋放及Dispose、Close和析構方法

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

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

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

         2:析構方法(終結器);

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

         3:提供Close方法;

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

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

1:提供public void Close()

    public void Close()

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

NET技術C#資源釋放及Dispose、Close和析構方法,轉載需保留來源!

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

主站蜘蛛池模板: 欧美极限扩肛 | 美女国产毛片A区内射 | 日韩精品欧美亚洲高清有无 | 全黄h全肉细节全文 | 超碰免费碰免费视频 | 国产成人精视频在线观看免费 | 中文字幕在线观看国产 | 午夜视频在线观看国产 | 樱桃视频影院在线播放 | 日本漫画母亲口工子全彩 | 99久久re6热精品首页 | 老司机试看午夜 | 久久se精品一区二区国产 | 91久久精品一区二区三区 | 朋友的娇妻好爽好烫嗯 | 久久9精品区-无套内射无码 | 精品一二三区久久AAA片 | np高h肉辣一女多男 no视频在线观看 | 69久久国产露脸精品国产 | 国产乱色伦影片在线观看 | 好想被狂躁A片免费久99 | 三级叫床震大尺度视频 | 亚洲成人精品久久 | 国产精品禁18久久久夂久 | 中文字幕s级优女区 | 免费女人光着全身网站 | 和尚扒开双腿蹂躏 | 亚洲 欧美 国产 综合 在线 | 亚洲 色 欧美 爱 视频 日韩 | 国产色综合久久无码有码 | 麻豆国产精品va在线观看约 | 嘟嘟嘟在线视频免费观看高清中文 | 亚洲国产精品一区二区第一页 | 国产精品久久久久久久久久久 | 日日摸夜夜嗷嗷叫日日拍 | 亚洲AV怡红院影院怡春院 | 九色PORNY蝌蚪视频首页 | 野花影院手机在线观看 | 沦为公交两奶头春药高潮迭起 | 蜜柚视频高清在线 | 性生大片免费看 |