C#與JAVA的關於名稱空間的方面是有所區別的,C#使用namespace關鍵字。
C#的名稱空間是可以嵌套的,不過嵌套+別名可能會產生一些問題,下面做一下相關的備註。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyNameSpace = ConsoleApplication1.NameSpace;
namespace ConsoleApplication1
{
namespace NameSpace
{
public class MyClass
{
public void print()
{
Console.WriteLine("NameSpace");
}
}
}
namespace MyNameSpace
{
public class MyClass
{
public void print()
{
Console.WriteLine("MyNameSpace");
}
}
}
class Program
{
static void Main(string[] args)
{
MyNameSpace.MyClass a = new MyNameSpace.MyClass();
a.print();
MyNameSpace::MyClass b = new NameSpace.MyClass();
b.print();
Console.ReadKey();
}
}
}
輸出的話第一行輸出MyNameSpace,第二行輸出NameSpace。
通過上面這個例子我們需要知道,如果別名與其他名稱空間產生衝突,採用別名.子名稱空間的寫法是不會指向別名的名稱空間,別名的名稱空間被隱藏了,如果要訪問則需要使用::的符號,它會強制編譯器使用由using語句定義的別名。