C#中的命名空间

 最近在看C++ Primer Plus。打算把自己看得记下来。算是倒粪。先复习一下C#中的命名空间。

C#中有命名空间,Java中有包。命名空间我觉得就像是装类的一个箱子,知道这个箱子再找某个类就方便了。

在C#中,用法如下:

文件:Xumingxsh.cs

namespace Xumingxsh

{

public class XumingxshSpace

{

}

public class Famile

{

}

}

在这里创建了命名空间Xumingxsh,这里命名空间里有两个类XumingxshSpace,Famile。

命名空间不需要声明,直接namespace Xumingxsh就“创建”了一个名称为Xumingxsh的命名空间,也没有public,private之类的标识符。

现在向Xumingxsh中添加第三个类:XumingXshSky。并且应用XumingxshSpac和 family这两个类。

文件名称XumingXshSky.cs

namespace Xumingxsh

{

public class XumingXshSky

{

XumingxshSpac space;

Famile family;

}

}

XumingXshSky中用到了XumingxshSpac和 family两个类,直接用就行了。因为他们在同一个命名空间里。

那么什么时候不能直接用呢?

现在“创建”第二个命名空间。

namespace Xumingxsh.Common

{

public class XumingxshThink

{

 XumingXshSky sky;

}

}

 

这里“创建”了一个命名空间Xumingxsh.Common,其中有一个类XumingxshThink。

但是如果编译这段代码,会产生错误。因为 XumingXshSky 并不在 Xumingxsh.Common命名空间中,也就是说它们不在一个箱子里。

不告诉XumingxshThink类命名空间是什么,谁知道到哪儿去找XumingXshSky 。你不告诉我 箱子名称,我知道到那个箱子里找东西。

那么命名空间 Xumingxsh.Common与 Xumingxsh有什么关系呢?有,名称有点相似,就是这一点关系,其他什么关系也没有。Xumingxsh.Common与 Xumingxsh可以说互补牵连。

如果想在类XumingxshThink中应用XumingXshSky ,得先告诉我到哪儿才能找到XumingXshSky 。

可以有两种方法。

第一种:

namespace Xumingxsh.Common

{

public class XumingxshThink

{

 Xumingxsh.XumingXshSky sky;

}

}

 

这种方法告诉了 XumingxshThink,XumingXshSky是 Xumingxsh里面的XumingXshSky。到 Xumingxsh中去找就找到了。

还有一种写法:

using  Xumingxsh;

namespace Xumingxsh.Common

{

public class XumingxshThink

{

  XumingXshSky sky;

}

}

 

这种写法是告诉程序,如果用到  XumingXshSky 先在当前命名空间Xumingxsh.Common中找,如果找不到,再到Xumingxsh中找找看看。

using是一个关键字。是告诉代码,你可以到我指的地方【Xumingxsh】找东西。如果程序在Xumingxsh.Common中找到了XumingXshSky ,它还是会去Xumingxsh中看看有没有XumingXshSky ,如果也有 ,程序就晕了,它不知道怎么办了,就会提示错误。

还我现在想Xumingxsh.Common中也添加一个XumingXshSky 类。如下:

namespace Xumingxsh.Common

{

public class XumingXshSky

{

}

}

现在直接用using就不行了,所以上边的用using的代码要修改:

using  Xumingxsh;

namespace Xumingxsh.Common

{

public class XumingxshThink

{

  Xumingxsh.XumingXshSky sky;

}

}

现在程序就不晕了。

 

如果你觉得  Xumingxsh太长,你还可以这样写上一段代码:

using  XM = Xumingxsh;

namespace Xumingxsh.Common

{

public class XumingxshThink

{

XM.XumingXshSky sky;

}

}

 

不过,C#中命名空间并不是必须有的,如果我写一下面的代码,也正确:

using  XM = Xumingxsh;

public class XumingxshThink

{

XM.XumingXshSky sky;

}

 

只不过XumingxshThink属于一个默认的命名空间而已。

 

 

在C#中有一个inner关键字,它是用来修饰一个内部类的。

例如:

inner class class1{

}

该段代码表示class1是一个内部类,在内部可见。

在什么内部呢?是不是在命名空间中可见?不是,而是在程序集中可见。

什么是程序集在这里不介绍了。

 

这大差不差的就是C#中的命名空间的用法了。

 

 

你可能感兴趣的:(java,C++,C#,Class)