C# using的三種用法
阿新 • • 發佈:2020-07-19
一、using指令
在檔案頂部引用名稱空間,如:using System;
二、using別名
為名稱空間或型別定義別名,這種做法有個好處就是當同一個cs檔案引用了兩個不同的名稱空間,但是兩個名稱空間都包括了一個相同名字的型別的時候,就會為此型別名稱空間建立別名。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; //為名稱空間定義別名 "ElseName" usingElseName = This.Is.Very.Very.Long.NamespaceName; //為類定義定義別名 using ElseCName = This.Is.Very.Very.Long.NamespaceName.ThisIsVeryVeryLongClassName; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //通過別名例項化物件 ::是命名空間別名的修飾符 ElseName::NamespaceExample NSEx = newElseName::NamespaceExample(); //通過別名例項化物件 ElseCName CN = new ElseCName(); Response.Write("名稱空間:" + NSEx.GetNamespace() + ";類名:" + CN.GetClassName()); } } namespace This.Is.Very.Very.Long.NamespaceName { class NamespaceExample { public string GetNamespace() {return this.GetType().Namespace; } } class ThisIsVeryVeryLongClassName { public string GetClassName() { return System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName; } } }
三.using語句
定義一個範圍,在範圍結束時處理物件。using語句提供了一個脈絡清晰的機制來控制資源的生存期,建立的物件會在using語句結束時被摧毀,使用前提該物件必須繼承了IDisposable介面。某些型別的非託管物件有數量限制或很耗費系統資源,在程式碼使用完它們後,儘可能快的釋放它們時非常重要的。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語句已經釋放了他的非託管資源之後使用該資源,可能導致不一致的狀態,不推薦使用。