一、using指令
使用using指令在文件頂部引入命名空間,如
using System; using System.IO;
二、using別名
用using為命名空間或類型定義別名,當引入的多個命名空間包含相同名字的類型時,需要使用該類型時,可以通過using為其指定別名,使代碼更加簡潔,避免沖突,例如:
using System; using aTest = nameSpaceA.Test; using bTest = nameSpaceB.Test; namespace @using { class Program { static void Main(string[] args) { aTest a = new aTest(); //aTest 代替 nameSpaceA.Test a.fun(); bTest b = new bTest(); //bTest 代替 nameSpaceB.Test b.fun(); Console.ReadKey(); } } } namespace nameSpaceA { public class Test { public void fun() { Console.WriteLine("this is test a"); } } } namespace nameSpaceB { public class Test { public void fun() { Console.WriteLine("this is test b"); } } }
輸出:this is test a
this is test b
三、using語句
某些類型的非托管對象有數量限制或很耗費系統資源,在代碼使用完它們后,盡可能快的釋放它們時非常重要的。using語句有助於簡化該過程並確保這些資源被適當的處置(dispose)。
它有兩種使用形式。
1:
using (ResourceType Identifier = Expression ) Statement
圓括號中的代碼分配資源,Statement是使用資源的代碼
using語句會隱式產生處置該資源的代碼,其步驟為:
a:分配資源
b:把Statement放進tyr塊
c:創建資源的Dispose方法的調用,並把它放進finally塊,例如:
using System; using System.IO; namespace @using { class Program { static void Main(string[] args) { using (TextWriter tw = File.CreateText("test.txt")) { tw.Write("this is a test"); } using (TextReader tr = File.OpenText("test.txt")) { string input; while ((input = tr.ReadLine()) != null) { Console.WriteLine(input); } } Console.ReadKey(); } } }
輸出:this is a test
2:
using (Expression) Statement
Expression 表示資源,Statement是使用資源,資源需要在using之前聲明
TextWriter tw = File.CreateText("test.txt"); using(tw){......}
這種方式雖然可以確保對資源使用結束后調用Dispose方法,但不能防止在using語句已經釋放了他的非托管資源之后使用該資源,可能導致不一致的狀態,不推薦使用