前兩天看到老大的代碼在代碼里運(yùn)用了using語(yǔ)句,剛學(xué)c#以為using只是運(yùn)用在程序的開(kāi)始用來(lái)引入名字空間,后來(lái)上網(wǎng)搜了搜,發(fā)現(xiàn)using用在程序中還是挺有用的
找到一篇講的不錯(cuò)的博文,也懶得寫(xiě),轉(zhuǎn)載至此,本人不才也加了點(diǎn)改動(dòng),謝謝博主
http://blog.sina.com.cn/s/blog_3e33a6e30100b6m1.html
在net中有一個(gè)至關(guān)重要的關(guān)鍵字,那就是using
using一般有著以下幾種用法:
1、直接引入命名空間
a、using System ,這個(gè)是最常用的,就是using+命名空間,這樣就可以直接使用命名空間中的類型,而免去了使用詳細(xì)的命名空間
b、使用全限定名
不用使用using System;直接在程序中調(diào)用System.Console.WriteLine("Hello C#");
第一種方法是比較常用的方法,可以一次導(dǎo)入整個(gè)命名空間到當(dāng)前命名空間,比較方便。
不過(guò)如果在當(dāng)前命名空間只使用一次命名空間中的某個(gè)類,例如上例使用全限定名也是合適的。
不過(guò)在某些情況下必須使用全限定名,比如在引入的兩個(gè)以上的命名空間中有重名的類,例如System下有一個(gè)Console類,在另一個(gè)自定義的命名空間MyNamespace中也有一個(gè)同名的Console類,這時(shí)如果我們?cè)诘谌齻€(gè)命名空間中同時(shí)引入了System和MyNamespace,這時(shí)如果要使用某一個(gè)具體的Console就需要使用權(quán)限定名System.Console 或 MyNamespace.Console,否則編譯器不知道我們具體使用哪一個(gè)Console,編譯無(wú)法通過(guò)。
2.using別名。using + 別名 = 包括詳細(xì)命名空間信息的具體的類型。
例如我們用以下語(yǔ)句引入System.IO.ComPRession命名空間:
using Zip=System.IO.Compression;
這時(shí)我們就可以用Zip表示System.IO.Compression命名空間,使用Zip.GZipStream就是使用System.IO.Compression.GZipStream。給程序書(shū)寫(xiě)帶來(lái)方便。
這種做法有個(gè)好處就是當(dāng)同一個(gè)cs引用了兩個(gè)不同的命名空間,但兩個(gè)命名空間都包括了一個(gè)相同名字的類型的時(shí)候。當(dāng)需要用到這個(gè)類型的時(shí)候,就每個(gè)地方都要用詳細(xì)命名空間的辦法來(lái)區(qū)分這些相同名字的類型。而用別名的方法會(huì)更簡(jiǎn)潔,用到哪個(gè)類就給哪個(gè)類做別名聲明就可以了。注意:并不是說(shuō)兩個(gè)名字重復(fù),給其中一個(gè)用了別名,另外一個(gè)就不需要用別名了,如果兩個(gè)都要使用,則兩個(gè)都需要用using來(lái)定義別名的。
例如:
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;
/// <summary>
/// Class1 的摘要說(shuō)明。
/// </summary>
class Class1
{
/// <summary>
/// 應(yīng)用程序的主入口點(diǎn)。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此處添加代碼以啟動(dòng)應(yīng)用程序
//
aClass my1 = new aClass();
Console.WriteLine(my1);
bClass my2 = new bClass();
Console.WriteLine(my2);
Console.WriteLine("Press any key");
Console.Read();
}
}
}
3.using語(yǔ)句,定義一個(gè)范圍,在范圍結(jié)束時(shí)處理對(duì)象。
場(chǎng)景:
當(dāng)在某個(gè)代碼段中使用了類的實(shí)例,而希望無(wú)論因?yàn)槭裁丛颍灰x開(kāi)了這個(gè)代碼段就自動(dòng)調(diào)用這個(gè)類實(shí)例的Dispose。要達(dá)到這樣的目的,用try...catch來(lái)捕捉異常也是可以的,但用using也很方便。
例如:
using (Class1 cls1 = new Class1(), cls2 = new Class1())
{
// the code using cls1, cls2
} // call the Dispose on cls1 and cls2
這里觸發(fā)cls1和cls2的Dispose條件是到達(dá)using語(yǔ)句末尾或者中途引發(fā)了異常并且控制離開(kāi)了語(yǔ)句塊
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注