91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#?using()如何使用

發布時間:2023-02-22 17:32:38 來源:億速云 閱讀:86 作者:iii 欄目:開發技術

這篇文章主要介紹“C# using()如何使用”,在日常操作中,相信很多人在C# using()如何使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C# using()如何使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

01.點明觀點 

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

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

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

第一種:引入命名空間

用法如下:

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

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

這里主要對第二種用法進行分析。

03.using如何實現資源釋放 

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

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

說起來也簡單:

using(...)語句經編譯器編譯之后,轉換了try{...}finally{...}

上面的代碼,經程序編譯后的代碼如下:

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

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

04.實踐探索

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

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

C#?using()如何使用

然后,使用using創建資源對象。

C#?using()如何使用

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

C#?using()如何使用

到此,關于“C# using()如何使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁波市| 元氏县| 绥江县| 金山区| 锡林浩特市| 灌南县| 三明市| 日照市| 夏邑县| 周宁县| 茂名市| 旌德县| 丹阳市| 广汉市| 昌乐县| 宜州市| 行唐县| 渝中区| 扎鲁特旗| 兴文县| 历史| 丽水市| 崇义县| 桐梓县| 西城区| 和林格尔县| 青阳县| 云阳县| 瓮安县| 波密县| 两当县| 阿图什市| 杭锦旗| 山西省| 武清区| 临猗县| 新民市| 金湖县| 东乡族自治县| 台湾省| 伽师县|