基礎知識之 - C# Using的用法
阿新 • • 發佈:2017-07-13
spa 方案 image acl 決定 ogr 托管 sid 引入
C#裏面Using有兩種用法:
1.作為指令。
- using+命名空間,導入其他命名空間中定義的類型,這樣可以在程序中直接用命名空間中的類型,不必指定命名空間;
命名空間是.NET程序在邏輯上的組織結構,而並非實際的物理結構,是一種避免類名沖突的方法,用於將不同的數據類型組合劃分的方式。
using System;
- using + 別名 = 命名空間,為命名空間或類型創建別名。
別名的好處是:當同一個文件下引用了不同的兩個命名空間,但這兩個命名空間都包括了一個相同名字的類型時,可以用別名的形式引用,這樣可以方便使用。
以using創建別名,有效的解決了這種可能的命名沖突,盡管我們可以通過類型全名稱來加以區分,但是這顯然不是最佳的解決方案,using使得這一問題迎刃而解,不費絲毫功夫,同時在編碼規範上看來也更加的符合編碼要求。
using aClass = NameSpace1.MyClass; using bClass = NameSpace2.MyClass;
2.作為語句。
- 於定義一個範圍,在此範圍的末尾將釋放對象,
C# 通過 .Net Framework 公共語言運行庫(CLR)自動釋放用於存儲不再需要的對象的內存。內存的釋放具有不確定性;
一旦CLR決定執行垃圾回收,就會釋放內存。但是,通常最好盡快釋放諸如:文件句柄和網路連接這樣的有限資源。
using語句允許指定使用資源的對象應當何時釋放。為using語句提供的對象必須實現IDisposable接口。此接口提供了Dispose方法,該方法釋放對象的資源。
可以在到達 using 語句的末尾時,或者在該語句結束之前引發了異常並且控制權離開語句塊時,退出 using 語句。
using System; class C : IDisposable { public void UseLimitedResource() { Console.WriteLine("Usinglimitedresource..."); } void IDisposable.Dispose() { Console.WriteLine("Disposinglimitedresource."); } } class Program { static void Main() { using (C c = new C()) { c.UseLimitedResource(); } Console.WriteLine("Nowoutsideusingstatement."); Console.ReadLine(); } }
結果如下:
- Dispose方法用於清理對象封裝的非托管資源,而不是釋放對象的內存,對象的內存依然由垃圾回收器控制。
- 程序在達到using語句末尾時退出using塊,而如果到達語句末尾之前引入異常則有可能提前退出。
總結:
using可以用於引入命名空間;用於別名;用於定義資源範圍。
基礎知識之 - C# Using的用法