1. 程式人生 > 其它 >C# Using 用法

C# Using 用法

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

using的多重身份都體現在哪些方面呢,我們先一睹為快吧:

1、引入名稱空間

2、建立別名

3、強制資源清理

下面,本文將從這幾個角度來闡述using的多彩應用。

(1)引用名稱空間

using作為引入名稱空間指令的用法規則為:

usingNamespace;

在.NET程式中,最常見的程式碼莫過於在程式檔案的開頭引入System名稱空間,其原因在於System名稱空間中封裝了很多最基本最常用的操作。

關於:名稱空間

名稱空間是.NET程式在邏輯上的組織結構,而並非實際的物理結構,是一種避免類名衝突的方法,用於將不同的資料型別組合劃分的方式。例如,在.NET中很多的基本型別都位於System名稱空間,資料操作型別位於System.Data名稱空間,

(2)建立命名空間別名

using為名稱空間建立別名的用法規則為:

usingalias=namespace|type;

其中namespace表示建立名稱空間的別名;而type表示建立類型別名。例如,在.NET Office應用中,常常會引入Microsoft.Office.Interop.Word.dll程式集,在引入名稱空間時為了避免繁瑣的型別輸入, 我們通常為其建立別名如下:

usingMSWord=Microsoft.Office.Interop.Word;

這樣,就可以在程式中以MSWord來代替Microsoft.Office.Interop.Word字首,如果要建立Application物件,則可以是這樣,

而且還有一個好處就是,在一個.CS檔案中引入了不同的名稱空間但是相同的類名的時候,用別名就可以解決這問題了。

3)強制資源清理

用途:清理非託管資源,不受GC控制的資源。Using結束後會隱式的呼叫Disposable方法。

用法:

using(Class1c=newClass1()){}//清理非託管不受GC控制的資源

但是當物件使用using關鍵字的時候,必須實現IDisposable介面。其實using的使用和try-catch-finaly中,在finaly程式碼域呼叫Disposable方法效果一樣。注意Using不能使用多個不同的類。

Class1f=newClass1();try{//執行程式碼}catch(){//異常處理}finally{f.Disposable();}

using 語句獲取一個或多個資源,執行一個語句,然後處置該資源。

using 語句: using ( 資源獲取 ) 嵌入語句

資源獲取: 區域性變數宣告

表示式

資源是實現 System.IDisposable 的類或結構,它包含名為 Dispose 的單個無引數方法。正在使用資源的程式碼可以呼叫 Dispose 以指示不再需要該資源。如果不呼叫 Dispose,則最終將因為垃圾回收而發生自動處置。

如果資源獲取的形式是區域性變數宣告,那麼此區域性變數宣告的型別必須為System.IDisposable 或是可以隱式轉換為 System.IDisposable 的型別。如果資源獲取的形式是表示式,那麼此表示式必須是 System.IDisposable 或是可以隱式轉換為 System.IDisposable 的型別。

在資源獲取中宣告的區域性變數必須是隻讀的,且必須包含一個初始值設定項。

using 語句被翻譯成三個部分:獲取、使用和處置。資源的使用隱式封閉在包含一個 finally 子句的 try語句中。此 finally 子句處置資源。如果獲取了 null 資源,則不進行對 Dispose 的呼叫,也不引發任何異常。

例如,下列形式的 using 語句

using(Rr1=newR()){r1.F();}

完全等效於

Rr1=newR();try{r1.F();}finally{if(r1!=null)((IDisposable)r1).Dispose();}

一個簡單的關鍵字,多種不同的應用場合。本文從比較全面的角度,詮釋了using關鍵字在.NET中的多種用法,值得指出的是這種用法並非實現於.NET的所有高階語言,本文的情況主要侷限在C#中。

轉載於:https://my.oschina.net/jackguo/blog/264043