成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C# using語句使用心得總結

開發 后端
這里是關于C# using語句使用心得總結,using關鍵字是大家用的比較多的,一般都是用在為命名空間創建別名上。希望本文能對大家有所幫助。

C# using語句用于定義一個范圍,在此范圍的末尾將釋放對象,這樣的用法比較少見,常見于非托管資源。這些資源在使用后,就必須徹底釋放。

學習過C#的人都知道,using是關鍵字。在MSDN里面一查C#參考(C# Reference),using關鍵字就會有兩個主要用途:

1、作為指令,用于為命名空間創建別名或導入其他命名空間中定義的類型。請參見[using 指令]。

2、作為C# using語句,用于定義一個范圍,在此范圍的末尾將釋放對象。請參見[using 語句]。

其中,第1點就是我們所熟悉using的使用方法,而第二種C# using語句方法我們就比較少用了,它常見于非托管資源(也就是在C++編程里面可能碰到的句柄和設備上下文),這些資源使用完畢后,是必須釋放的。在C#里面,由于完全的面向對象編程,這些資源類型都實現了IDisposable接口,因此會使用在捕獲異常try...catch語句的finally塊中釋放資源,代碼如下:

  1. {  
  2.   Font font1 = new Font("Arial", 10.0f);  
  3.   try  
  4.   {  
  5.     byte charset = font1.GdiCharSet;  
  6.   }  
  7.   finally  
  8.   {  
  9.     if (font1 != null)  
  10.       ((IDisposable)font1).Dispose();  
  11.   }  

這樣確保調用Dispose,從而保證釋放資源。(請注意,使用額外的大括號為對象創建有效的范圍而此時如果使用using語句,同樣能夠獲得相同的結果,代碼如下:

  1. using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f))  
  2. {  
  3.     // Use font3 and font4.  

using語句按照正確的方式調用對象上的Dispose方法,并(在您按照前面所示方式使用它時)會導致在調用 Dispose 時對象自身處于范圍之外。在using塊中,對象是只讀的并且無法進行修改或重新分配。

同時還要注意的一點是:

按照規則,當使用IDisposable對象時,應在using語句中聲明和實例化此對象。雖然可以在using語句外實例化資源對象,代碼如下:

  1. Font font2 = new Font("Arial", 10.0f);  
  2. using (font2) // not recommended  
  3. {  
  4.     // use font2  
  5. }  
  6. // font2 is still in scope  
  7. // but the method call throws an exception  
  8. float f = font2.GetHeight();  

在這種情況下,該對象將在控制權離開 using 塊之后保持在范圍內,即使它可能將不再具有對其非托管資源的訪問權也是如此。換句話說,再也不能完全初始化該對象。如果試圖在 using 塊外部使用該對象,則可能導致引發異常,如上述代碼段3中的font2.GetHeight()調用而產生異常。由于這個原因,通常最好是在 using 語句中實例化該對象并將其范圍限制在 using 塊中。

在這一點上,如果再使用ildasm工具一查,就會看到代碼段1和代碼段2生成的代碼幾乎是完全一樣的,而這樣使用使用using語句的方式更加簡潔、方便。

本文來自liput博客園文章《C# using指令 心得總結

【編輯推薦】

  1. C#創建Windows服務詳細介紹
  2. C#動態編譯簡單剖析
  3. C#靜態字段與實例字段分析
  4. C#匿名方法詳細剖析
  5. C#命名屬性簡單描述
責任編輯:彭凡 來源: 博客園
相關推薦

2010-02-01 10:15:07

C++ TinyXML

2009-08-31 10:00:07

C#靜態變量

2009-08-24 17:27:05

C#泛型應用

2011-01-19 14:57:09

Thunderbird

2011-03-15 11:05:03

2009-06-19 11:09:27

Spring AOP

2010-06-01 13:42:37

TortoiseSVN

2010-08-06 11:12:38

FlexCairngorm框架

2011-01-07 11:14:17

Nginx負載均衡負載均衡

2011-05-23 13:27:53

2009-08-25 16:49:44

C#使用if語句

2011-09-01 10:16:43

JQuery Mobi

2009-06-26 16:12:08

ThickboxjQuery

2010-03-02 17:33:49

Android 2.0

2024-04-16 12:13:07

usingC#開發

2009-08-26 14:01:33

C# using用法

2009-08-25 16:56:52

C#使用塊來分組語句

2009-08-11 11:42:50

Ruby使用心得

2009-08-25 16:32:24

C#語言

2009-08-26 17:22:09

C#語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天精品在线 | 色吊丝2| 在线播放国产一区二区三区 | 中文字幕日韩在线 | 欧美 日韩 中文 | 成年人网站国产 | 国产成人免费在线观看 | 成人激情视频网 | 亚洲资源在线 | 成人片免费看 | 天堂三级 | av中文字幕在线 | 一级黄色片在线看 | 一区二区日本 | 欧美一区在线视频 | 国产精品成人一区二区三区夜夜夜 | 亚洲成人毛片 | 国产午夜精品久久久久免费视高清 | 不卡一区二区三区四区 | japanhd美女动 | 成人做爰999 | 一级中国毛片 | 亚洲人人舔人人 | 亚洲专区在线 | 欧美日韩高清一区二区三区 | 91av在线看 | 一区二区三区四区免费观看 | 午夜一区二区三区在线观看 | 99久久免费精品国产免费高清 | 91精品国产一区 | 久久久久国产视频 | 亚洲精品中文字幕中文字幕 | 日韩av在线一区二区 | 欧美成人精品一区二区男人看 | 国产激情在线播放 | 天天综合成人网 | 色综合天天天天做夜夜夜夜做 | 97av在线 | av国产精品| 完全免费av在线 | 亚洲风情在线观看 |