命名空間旨在提供一種將一組名稱與另一組名稱分開的方法。在一個命名空間中聲明的類名稱與在另一個命名空間中聲明的相同類名稱不沖突。
命名空間定義以關(guān)鍵字namespace開頭,后跟命名空間名稱如下:
namespace namespace_name
{
// code declarations
}
要調(diào)用命名空間啟用的任一函數(shù)或變量的版本,請按如下所示使用命名空間名稱指定:
namespace_name.item_name;
以下程序演示了命名空間的使用:
using System;
namespace first_space
{
class namespace_cl
{
public void func()
{
Console.WriteLine("Inside first_space");
}
}
}
namespace second_space
{
class namespace_cl
{
public void func()
{
Console.WriteLine("Inside second_space");
}
}
}
class TestClass
{
static void Main(string[] args)
{
first_space.namespace_cl fc = new first_space.namespace_cl();
second_space.namespace_cl sc = new second_space.namespace_cl();
fc.func();
sc.func();
Console.ReadKey();
}
}
當(dāng)編譯和執(zhí)行上述代碼時,會產(chǎn)生以下結(jié)果:
Inside first_space
Inside second_space
using關(guān)鍵字指出程序正在使用給定命名空間中的名稱。例如,在前面章節(jié)的示例程序中使用了System命名空間。Console類是在System命名空間中定義的,所以只簡寫為:
Console.WriteLine ("Hello there");
可以把完整的名稱寫成:
System.Console.WriteLine("Hello there");
還可以使用using namespace偽指令避免前綴命名空間。該指令告訴編譯器后續(xù)代碼正在使用指定命名空間中的名稱。因此,命名空間隱含在以下代碼中:
下面重寫我們重寫前面的例子,使用以下代碼中的指令:
using System;
using first_space;
using second_space;
namespace first_space
{
class abc
{
public void func()
{
Console.WriteLine("Inside first_space");
}
}
}
namespace second_space
{
class efg
{
public void func()
{
Console.WriteLine("Inside second_space");
}
}
}
class TestClass
{
static void Main(string[] args)
{
abc fc = new abc();
efg sc = new efg();
fc.func();
sc.func();
Console.ReadKey();
}
}
當(dāng)編譯和執(zhí)行上述代碼時,會產(chǎn)生以下結(jié)果:
Inside first_space
Inside second_space
可以在一個命名空間中定義另一個命名空間,如下所示:
namespace namespace_name1
{
// code declarations
namespace namespace_name2
{
// code declarations
}
}
可以使用點(diǎn)(.)運(yùn)算符訪問嵌套命名空間的成員,如下所示:
using System;
using first_space;
using first_space.second_space;
namespace first_space
{
class abc
{
public void func()
{
Console.WriteLine("Inside first_space");
}
}
namespace second_space
{
class efg
{
public void func()
{
Console.WriteLine("Inside second_space");
}
}
}
}
class TestClass
{
static void Main(string[] args)
{
abc fc = new abc();
efg sc = new efg();
fc.func();
sc.func();
Console.ReadKey();
}
}
當(dāng)編譯和執(zhí)行上述代碼時,會產(chǎn)生以下結(jié)果:
Inside first_space
Inside second_space