程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# Using 用法

C# Using 用法

編輯:關於C語言
在.NET大家庭中,有不少的關鍵字承擔了多種角色,例如new關鍵字就身兼數職,除了能夠創建對象,在繼承體系中隱藏基類成員,還在泛型聲明中約束可能用作類型參數的參數,在詳細討論using的多重身份的基礎上來了解.Net在語言機制上的簡便與深邃。

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

  1、引入命名空間

  2、創建別名

  3、強制資源清理

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

  (1)引用命名空間

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

  using NamespaC++(C++培訓 )e;

  在.Net程序中,最常見的代碼莫過於在程序文件的開頭引入System命名空間,其原因在於System命名空間中封裝了很多最基本最常用的操作。

  關於:命名空間

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

  (2)創建命名空間別名

  using為命名空間創建別名的用法規則為:

  using alias = namespace | type;

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

  using MSWord = Microsoft.Office.Interop.Word;

  這樣,就可以在程序中以MSWord來代替Microsoft.Office.Interop.Word前綴,如果要創建Application對象,則可以是這樣,

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

  3)強制資源清理

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

  用法:

  using (Class1 c = new Class1())

  {

  }//清理非托管不受GC控制的資源

  但是當對象使用using關鍵字的時候,必須實現IDisposable接口。其實using的使用和try-catch-finaly中,在finaly代碼域調用Disposable方法效果一樣。注意Using不能使用多個不同的類。

  Class1 f = new Class1();

  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 (R r1 = new R()) {

  r1.F();

  }

  完全等效於

  R r1 = new R();

  try {

  r1.F();

  }

  finally {

  if (r1 != null) ((IDisposable)r1).Dispose();

  }

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved