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

C# using用法三則

編輯:C#入門知識

(1)引用命名空間 using作為引入命名空間指令的用法規則為: using Namespace; 在.NET程序中,最常見的代碼莫過於在程序文件的開頭引入System命名空間,其原因在於System命名空間中封裝了很多最基本最常用的操作,下面的代碼對我們來說最為熟悉不過: using System; 這樣,我們在程序中就可以直接使用命名空間中的類型,而不必指定詳細的類型名稱。using指令可以訪問嵌套命名空間。 關於:命名空間 命名空間是.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 的單個無參數方法。(如:截圖2)正在使用資源的代碼可以調用 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的幾種用法 1.using指令。using + 命名空間名字,這樣可以在程序中直接用命令空間中的類型,而不必指定類型的詳細命名空間,類似於Java的import,這個功能也是最常用的,幾乎每個cs的程序都會用到。例如:using System; 一般都會出現在*.cs中。 2.using別名。using + 別名 = 包括詳細命名空間信息的具體的類型。這種做法有個好處就是當同一個cs引用了兩個不同的命名空間,但兩個命名空間都包括了一個相同名字的類型的時候。當需要用到這個類型的時候,就每個地方都要用詳細命名空間的辦法來區分這些相同名字的類型。而用別名的方法會更簡潔,用到哪個類就給哪個類做別名聲明就可以了。注意:並不是說兩個名字重復,給其中一個用了別名,另外一個就不需要用別名了,如果兩個都要使用,則兩個都需要用using來定義別名的。例如:

using System; using aClass = NameSpace1.MyClass; using bClass = NameSpace2.MyClass; namespace NameSpace1  {     public class MyClass      {         public override string ToString()          {             return "You are in NameSpace1.MyClass";         }     } } namespace NameSpace2  {     class MyClass      {         public override string ToString()          {             return "You are in NameSpace2.MyClass";         }     } } namespace testUsing {     using NameSpace1;     using NameSpace2;     ///      /// Class1 的摘要說明。     ///      class Class1     {         ///          /// 應用程序的主入口點。         ///          [STAThread]         static void Main(string[] args)         {             //             // TODO: 在此處添加代碼以啟動應用程序             //                          aClass my1 = new aClass();                         Console.WriteLine(my1);             bClass my2 = new bClass();             Console.WriteLine(my2);             Console.WriteLine("Press any key");             Console.Read();         }     } } 3.using語句,定義一個范圍,在范圍結束時處理對象。場景:當在某個代碼段中使用了類的實例,而希望無論因為什麼原因,只要離開了這個代碼段就自動調用這個類實例的Dispose。要達到這樣的目的,用try...catch來捕捉異常也是可以的,但用using也很方便。例如: using (Class1 cls1 = new Class1(), cls2 = new Class1()) {   // the code using cls1, cls2 } // call the Dispose on cls1 and cls2 這裡觸發cls1和cls2的Dispose條件是到達using語句末尾或者中途引發了異常並且控制離開了語句塊。

      

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