亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C# using()的使用方法

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

01.點明觀點 

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

這里說的非托管資源指的是實現(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())。

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

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

通常,我們以下面的形式聲明一個非托管資源,當代碼塊執(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();
  }
}

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

04.實踐探索

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

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

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

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

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

05.總結 

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

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

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

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

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

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

相關文章

  • C#登錄界面代碼詳細圖文教程

    C#登錄界面代碼詳細圖文教程

    我們在使用C#做項目的時候,基本上都需要制作登錄界面,下面這篇文章主要給大家介紹了關于C#登錄界面代碼的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • WPF自動隱藏的消息框的實例代碼

    WPF自動隱藏的消息框的實例代碼

    本文給大家介紹WPF自動隱藏的消息框?qū)嵗a,當鼠標放上去將一直顯示,移開動畫繼續(xù),提供normal和error兩種邊框。非常不錯,具有參考借鑒價值,感興趣的朋友一起看下吧
    2016-07-07
  • C#用timer實現(xiàn)背單詞小程序

    C#用timer實現(xiàn)背單詞小程序

    這篇文章主要為大家詳細介紹了C#用timer實現(xiàn)背單詞小程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Unity如何獲取Texture內(nèi)存大小方法詳解

    Unity如何獲取Texture內(nèi)存大小方法詳解

    這篇文章主要為大家介紹了Unity如何獲取Texture內(nèi)存大小方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • WPF實現(xiàn)動畫效果(二)之From/To/By動畫

    WPF實現(xiàn)動畫效果(二)之From/To/By動畫

    這篇文章介紹了WPF實現(xiàn)動畫效果之From/To/By動畫,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • 利用多線程句柄設置鼠標忙碌狀態(tài)的實現(xiàn)方法

    利用多線程句柄設置鼠標忙碌狀態(tài)的實現(xiàn)方法

    怎樣利用多線程句柄設置鼠標忙碌狀態(tài)呢?下面小編就為大家介紹一下具體的實現(xiàn)方法吧!需要的朋友可以過來參考下
    2013-08-08
  • C# OpenVINO讀取百度模型實現(xiàn)印章檢測

    C# OpenVINO讀取百度模型實現(xiàn)印章檢測

    這篇文章主要為大家詳細介紹了C# OpenVINO如何通過直接讀取百度模型實現(xiàn)印章檢測,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • C#通過標簽軟件Bartender的ZPL命令打印條碼

    C#通過標簽軟件Bartender的ZPL命令打印條碼

    這篇文章介紹了C#通過標簽軟件Bartender的ZPL命令打印條碼,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-01-01
  • C#實現(xiàn)的海盜分金算法實例

    C#實現(xiàn)的海盜分金算法實例

    這篇文章主要介紹了C#實現(xiàn)的海盜分金算法,結合具體實例形式分析了海盜分金算法的原理與C#相應實現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • C#實現(xiàn)托盤程序并禁止多個應用實例運行的方法

    C#實現(xiàn)托盤程序并禁止多個應用實例運行的方法

    這篇文章主要介紹了C#實現(xiàn)托盤程序并禁止多個應用實例運行的方法,涉及C#中NotifyIcon控件的使用及設置標志位控制程序只運行一個的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11

最新評論