在C#程序中,每提及一個"名稱",編譯器就要對這個"名稱"進行"決議(resolve)";簡言之,就要讓這個"名稱"可見(Visible)。舉例說明一下:
Console.WriteLine("Hello ,EdgarSun!");
此時編譯器將無法對Console這一"名稱"進行決議(resolve);這種情況和C中用strcpy()函數(shù)而沒包含string這個頭文件一樣,C中是這樣解決的:#include <string.h>。C#中using指令提供了一種解決方案:using System;這條指令告訴編譯器到System這個"命名空間"中查找無法決議(resolve)的"名稱";
另一種說法是明確告訴編譯器到何處去尋找(look for)這個"名稱",那就是我們所說的"全飾名稱(full
qualified name)":System.Console.WriteLine("Hello,EdgarSun!")。
下面舉一個"命名空間"的例子:
namespace N1
{
public class A{…} //N1.A
}
namespace N2
{
public class A{…} //N2.A
}
類A定義于各自的命名空間namespace;現(xiàn)在類A對整個程序來說不再是可見Visible 的了。而如若我們在程序中同時"開啟"(或叫"曝光"expose)兩個命名空間,那么unqualified name A將導致編譯錯誤;此時我們必須使用"全飾名稱",如N2.A a;
另外,N1和N2可以相同,編譯器認為我們想在原先存在的命名空間中加入新聲明declare;
還有一種方法Method是使用別名Alias(僅在當前命名空間中有效):
namespace N3
{
using N1;
using N2;
using A1 = N1.A;
using A2 = N2.A;
class B
{
A1 a1;
A2 a2;
}
}
新聞熱點
疑難解答