一、命名空間嵌套
上一節中講到命名空間在類的對象實例化的過程中可以防止類的沖突,如果兩個類名一樣的類包含在兩個不同的命名空間中,那麼在實例對象的創建的時候系統就會提示你該選擇用哪個類.而所謂命名空間嵌套是指在一個命名空間嵌套中裡還可以包含另一個命名空間嵌套。下面用一個簡單的例子來說明:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Collections.ObjectModel;
using System.Collections;
using System.Reflection;
namespace Csharp//最外面的命名空間
{
classProgram
{
staticvoidMain(string[] args){
Csharp.Man Mike = new Csharp.Man();//創建namespace Csharp中的Man
Counter.Monkey Wukong = newglobal::Csharp.Counter.Monkey();
//創建namespace Counter中的.Monkey類對象
Counter.Nestedspace.Man Jakson = new Counter.Nestedspace.Man();
//創建namespace Counter中的Man類對象,必須以上面的方法來區分兩個Man類
Console.Write("Csharp.Man's name is{0}", Mike.name);
Console.WriteLine("Counter.Monkey's name is {0}", Wukong.name);
Console.WriteLine("Counter.Nestedspace.Man's name is{0} ", Jakson.name);
//輸出三個對象的名字
Console.ReadKey();
}
}
namespace Csharp
{
classMan
{
publicstring name;
public Man()
{
this.name = "name in Man";
}
}
}
namespace Counter
{
classMonkey
{
publicstring name;
public Monkey()
{
this.name = "name in Monkey";
}
}// namespace Nestedspace嵌套在namespace Counter裡面
namespace Nestedspace
{
classMan
{
publicstring name;
public Man()
{
this.name = "nested name";
}}}}}
}
輸出的結果:
二、同一個命名空間兩個類的同名方法
現在將下面的方法加入到兩個Man類中,看下它們的對象調用這個方法後的結果是
public void ChangeName(string newName)
{this.name = newName;}
Mike.ChangeName("劉德華"); Jakson.ChangeName("Mike Jachson")
三.給命名空間起別名
在程序的引用開始:
using NewName = Csharp.Csharp;
別名 原來的名字
下面看一個簡單的例子,在上面的程序中新增代碼:
using NewName = Csharp.Csharp;//引用
Console.WriteLine("using NewName = Csharp.Csharp;");
NewName.Man NewMan = new NewName.Man();//同樣建立Mana對象
Console.WriteLine("NewMan 's name is__{0}", NewMan.name);
NewMan.ChangeName("郭靖");
Console.WriteLine("NewMan 's name is__{0}", NewMan.name);
程序運行的結果: