C#中using的使用方式詳解
C#中 using 關(guān)鍵字主要有以下幾種方式。
1. 引入命名空間
例如:using System,幾乎每個類中都會用到。
2.為引入的命名空間起別名
using + 別名 = 包括詳細命名空間信息的具體的類型
using aClass = NameSpace1.MyClass; using bClass = NameSpace2.MyClass;<br>
優(yōu)點:當同一個cs引用了兩個不同的命名空間,但兩個命名空間都包括了一個相同名字的類型的時候。當需要用到這個類型的時候,就每個地方都要用詳細命名空間的辦法來區(qū)分這些相同名字的類型。而用別名的方法會更簡潔,用到哪個類就給哪個類做別名聲明就可以了。注意:并不是說兩個名字重復(fù),給其中一個用了別名,另外一個就不需要用別名了,如果兩個都要使用,則兩個都需要用using來定義別名的。
3.自動釋放創(chuàng)建的對象
作用:
1. 自動釋放非托管資源,避免緩存,內(nèi)存溢出,允許程序員指定使用資源的對象應(yīng)當何時釋放資源。
2.簡化try catch 得到在此定義域內(nèi)自動釋放所新建的對象,以簡化代碼;
本質(zhì):在程序編譯階段,編譯器會自動將using語句生成為try-finally語句,并在finally塊中調(diào)用對象的Dispose方法,來清理資源。所以,using語句等效于try-finally語句。
Font f2 = new Font("Arial", 10, FontStyle.Bold);
try
{
}
finally
{
if (f2 != null) ((IDisposable)f2).Dispose();
}注意事項:
1. 括號內(nèi)使用的對象必須實現(xiàn) IDisposable 接口。此接口提供了 Dispose 方法,該方法將釋放此對象的資源。禁止為不支持IDisposable接口的類型使用using語句,否則會出現(xiàn)編譯錯誤。
using (MemoryStream ms = new MemoryStream())
{
qrCodeImage.Save(ms, ImageFormat.Jpeg);
returnImageData = ms.GetBuffer();
ms.Close();
}2.using語句適用于清理單個非托管資源的情況,而多個非托管對象的清理最好以try-finnaly來實現(xiàn),因為嵌套的using語句可能存在隱藏的Bug。內(nèi)層using塊引發(fā)異常時,將不能釋放外層using塊的對象資源。
3.using語句支持初始化多個變量,但前提是這些變量的類型必須相同,例如:
using(Pen p1 = new Pen(Brushes.Black), p2 = new Pen(Brushes.Blue))
{
}4.針對初始化對個不同類型的變量時,可以都聲明為IDisposable類型
using (IDisposable font = new Font("Verdana", 12), pen = new Pen(Brushes.Black))
{
float size = (font as Font).Size;
Brush brush = (pen as Pen).Brush;
}人生如逆旅我亦是行人
到此這篇關(guān)于C#中using的使用方式的文章就介紹到這了,更多相關(guān)C#中using的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實現(xiàn)Bitmap類型與Byte[]類型相互轉(zhuǎn)化的示例詳解
在C#編程中,Bitmap類型和Byte[]類型之間的相互轉(zhuǎn)化是圖像處理和數(shù)據(jù)傳輸中常見的需求,Bitmap類型表示一個位圖圖像,而Byte[]類型則是一個字節(jié)數(shù)組,本文將詳細介紹如何在這兩種類型之間進行相互轉(zhuǎn)化,需要的朋友可以參考下2024-07-07
利用C#實現(xiàn)SSLSocket加密通訊的方法詳解
這篇文章主要給大家介紹了關(guān)于如何利用C#實現(xiàn)SSLSocket加密通訊的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2020-07-07
使用C#實現(xiàn)將Word?轉(zhuǎn)文本存儲到數(shù)據(jù)庫并進行管理
這篇文章主要為大家詳細介紹了如何使用C#實現(xiàn)將Word?轉(zhuǎn)文本存儲到數(shù)據(jù)庫并進行管理,文中的示例代碼講解詳細,需要的小伙伴可以參考一下2024-03-03

