一、命名空间嵌套
上一节中讲到命名空间在类的对象实例化的过程中可以防止类的冲突,如果两个类名一样的类包含在两个不同的命名空间中,那么在实例对象的创建的时候系统就会提示你该选择用哪个类.而所谓命名空间嵌套是指在一个命名空间嵌套中里还可以包含另一个命名空间嵌套。下面用一个简单的例子来说明:
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);
程序运行的结果: