最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# using()的使用方法

 更新時間:2023年02月21日 10:40:05   作者:北京劉先生  
本文主要介紹了C# using()的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

01.點明觀點 

C#中,非托管資源使用之后必須釋放,而using()是使用非托管資源的最佳方式,可以確保資源在代碼塊結(jié)束之后被正確釋放,并且代碼更簡潔。

這里說的非托管資源指的是實現(xiàn)IDisposable或IAsyncDisposable接口的類。

using是如何實現(xiàn)資源釋放?本文將予以解答。

02.C#中,using的兩個作用 

第一種:引入命名空間

用法如下:

using System.Text;
using s = System.Text;       //為命名空間定義別名
using static System.Math;    //引入類型靜態(tài)成員
global using System.Math;    //全局引入

第二種:聲明一個對象,并確保該對象在代碼塊執(zhí)行完之后被釋放(Dispose())。

這里主要對第二種用法進(jìn)行分析。

03.using如何實現(xiàn)資源釋放 

通常,我們以下面的形式聲明一個非托管資源,當(dāng)代碼塊執(zhí)行完之后,資源會自動釋放,那程序是如何做到的呢?

using (var file = File.Open("filePath", FileMode.OpenOrCreate))
{
    //do something
}

說起來也簡單:

using(...)語句經(jīng)編譯器編譯之后,轉(zhuǎn)換了try{...}finally{...}

上面的代碼,經(jīng)程序編譯后的代碼如下:

FileStream file = File.Open("filePath", FileMode.OpenOrCreate);
try
{
  //do something
}
finally
{
  if (file!= null)
  {
    ((IDisposable)file).Dispose();
  }
}

兩段代碼的運行結(jié)果是一樣的,對比之下,很明顯,使用using()的代碼更簡潔。

04.實踐探索

實踐出真知,我們通過一個例子,使用反編譯工具(ILSpy或ILDasm)查看生成的DLL,進(jìn)行驗證。

首先,定義一個實現(xiàn)了IDisposable接口的類。當(dāng)然也可以使用.NET中內(nèi)置的類,這里采用自定義類是為了驗證,只要是實現(xiàn)了IDisposable接口的類,都可以使用這種方式。

然后,使用using創(chuàng)建資源對象。

最后,查看編譯后生成的IL代碼文件,可以看到確實如上面所說,using(...)語句經(jīng)編譯器編譯之后,轉(zhuǎn)換了try{...}finally{...},并且在finally{}中完成了對Dispose()方法的調(diào)用。 

至此,using()如何完成對非托管資源的釋放,就很清楚了。

05.總結(jié) 

using()語句編譯后生成 try{...} finally{...} 語句,進(jìn)而確保資源釋放。

using()是程序中使用非托管資源的最佳方式。

using()的本質(zhì)是C#中的語法糖。

糖讓人快樂,同樣語法糖也能讓編程變得快樂,類似using()的語法糖,可以簡化代碼,確保必要邏輯的正確執(zhí)行;糖只是調(diào)味劑,同樣語法糖也只是簡化編碼,核心業(yè)務(wù)邏輯,還需要開發(fā)人員完成。

using的用法很簡單,在合適的場景下正確使用,可以讓開發(fā)工作事半功倍。

到此這篇關(guān)于C# using()的使用方法的文章就介紹到這了,更多相關(guān)C# using()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

武安市| 侯马市| 甘南县| 磐安县| 阿坝县| 论坛| 平江县| 正蓝旗| 青河县| 兴宁市| 吴桥县| 合川市| 梁河县| 逊克县| 临夏市| 新昌县| 淄博市| 监利县| 长白| 呼玛县| 苏尼特左旗| 三原县| 彩票| 海伦市| 保定市| 阿坝| 木兰县| 蛟河市| 土默特左旗| 大石桥市| 友谊县| 乌鲁木齐县| 咸丰县| 阜南县| 调兵山市| 无极县| 昌宁县| 平湖市| 凌海市| 阿坝县| 东港市|