



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第C#using的本質(zhì)及使用詳解目錄01.點(diǎn)明觀點(diǎn)02.C#中,using的兩個(gè)作用03.using如何實(shí)現(xiàn)資源釋放04.實(shí)踐探索05.總結(jié)
01.點(diǎn)明觀點(diǎn)
C#中,非托管資源使用之后必須釋放,而using()是使用非托管資源的最佳方式,可以確保資源在代碼塊結(jié)束之后被正確釋放,并且代碼更簡(jiǎn)潔。
這里說(shuō)的非托管資源指的是實(shí)現(xiàn)IDisposable或IAsyncDisposable接口的類。
using是如何實(shí)現(xiàn)資源釋放?本文將予以解答。
02.C#中,using的兩個(gè)作用
第一種:引入命名空間
用法如下:
usingSystem.Text;
usings=System.Text;//為命名空間定義別名
usingstaticSystem.Math;//引入類型靜態(tài)成員
globalusingSystem.Math;//全局引入
第二種:聲明一個(gè)對(duì)象,并確保該對(duì)象在代碼塊執(zhí)行完之后被釋放(Dispose())。
這里主要對(duì)第二種用法進(jìn)行分析。
03.using如何實(shí)現(xiàn)資源釋放
通常,我們以下面的形式聲明一個(gè)非托管資源,當(dāng)代碼塊執(zhí)行完之后,資源會(huì)自動(dòng)釋放,那程序是如何做到的呢?
using(varfile=File.Open("filePath",FileMode.OpenOrCreate))
//dosomething
說(shuō)起來(lái)也簡(jiǎn)單:
using(...)語(yǔ)句經(jīng)編譯器編譯之后,轉(zhuǎn)換了try{...}finally{...}
上面的代碼,經(jīng)程序編譯后的代碼如下:
FileStreamfile=File.Open("filePath",FileMode.OpenOrCreate);
//dosomething
finally
if(file!=null)
((IDisposable)file).Dispose();
兩段代碼的運(yùn)行結(jié)果是一樣的,對(duì)比之下,很明顯,使用using()的代碼更簡(jiǎn)潔。
04.實(shí)踐探索
實(shí)踐出真知,我們通過(guò)一個(gè)例子,使用反編譯工具(ILSpy或ILDasm)查看生成的DLL,進(jìn)行驗(yàn)證。
首先,定義一個(gè)實(shí)現(xiàn)了IDisposable接口的類。當(dāng)然也可以使用.NET中內(nèi)置的類,這里采用自定義類是為了驗(yàn)證,只要是實(shí)現(xiàn)了IDisposable接口的類,都可以使用這種方式。
然后,使用using創(chuàng)建資源對(duì)象。
最后,查看編譯后生成的IL代碼文件,可以看到確實(shí)如上面所說(shuō),using(...)語(yǔ)句經(jīng)編譯器編譯之后,轉(zhuǎn)換了try{...}finally{...},并且在finally{}中完成了對(duì)Dispose()方法的調(diào)用。
至此,using()如何完成對(duì)非托管資源的釋放,就很清楚了。
05.總結(jié)
using()語(yǔ)句編譯后生成try{...}finally{...}語(yǔ)句,進(jìn)而確保資源釋放。using()是程序中使用非托管資源的最佳方式。using()的本質(zhì)是C#中的語(yǔ)法糖。
糖讓人快樂(lè),同樣語(yǔ)法糖也能讓編程變得快樂(lè),類似using()的語(yǔ)法糖,可以簡(jiǎn)化代碼,確保必要邏輯的正確執(zhí)行;糖只是調(diào)味劑,同樣語(yǔ)法糖也只是簡(jiǎn)化編碼,核心業(yè)務(wù)邏輯,還需要開(kāi)發(fā)人員完成。
using的用法很簡(jiǎn)單,在合適的場(chǎng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)生辯論賽背景課件
- 通信基站設(shè)備采購(gòu)、安裝及優(yōu)化合同
- 車輛轉(zhuǎn)讓及新能源充電樁安裝與運(yùn)營(yíng)服務(wù)合同
- 代付水利工程款三方代付協(xié)議
- 電力及鄉(xiāng)村工作政策法規(guī)知識(shí)考試試卷
- 怎樣評(píng)教學(xué)課件
- 品牌故事與消費(fèi)者情感路徑構(gòu)建考核試卷
- 粘合劑與密封劑在藝術(shù)品修復(fù)中的應(yīng)用考核試卷
- 氣囊材料中單體對(duì)材料抗撕裂強(qiáng)度的貢獻(xiàn)考核試卷
- 儀器精度校準(zhǔn)的實(shí)驗(yàn)室能力評(píng)估考核試卷
- 教師如何使用AI開(kāi)展教學(xué)DeepSeek使用指南人工智能 課件
- 油氣田地面工程詳解
- 2025年中國(guó)電梯檢驗(yàn)檢測(cè)市場(chǎng)全面調(diào)研及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 員工宿舍表格模板
- 天然氣計(jì)量與標(biāo)準(zhǔn)化-洞察分析
- 《護(hù)理不良事件》課件
- 真需求-打開(kāi)商業(yè)世界的萬(wàn)能鑰匙
- 無(wú)創(chuàng)眶周抗衰規(guī)范
- 暑假假期安全教育(課件)-小學(xué)生主題班會(huì)
- 花崗巖路面鋪設(shè)工藝流程
- 鋼結(jié)構(gòu)廠房水電安裝施工設(shè)計(jì)方案
評(píng)論
0/150
提交評(píng)論