标签:
名称空间是.NET中提供应用程序代码容器的方式,这样就可以唯一地标识代码及其内容。名称空间也是.ENT Framework中给项分类的一种方式。默认情况下,C#代码包含在全局名称空间中。这意味着对于包含在这段代码中的项,只要按照名称进行引用,就可以由全局名称空间中的其他代码访问它们。
可以使用namespace关键字为花括号中的代码块显示定义名称空间。如果在该名称空间代码的外部使用名称空间中的名称,就必须写出该名称空间中的限定名称。限定名称包括它所有的分层信息。这基本上意味着,如果一个名称空间中的代码需要使用在另一个名称空间中定义的名称,就必须包括对该名称空间的引用。限定名称在不同的命名空间级别之间使用句点字符(.)如下所示:
namespace LevelOne { //code in LevelOne namespace //name "NameOne" defined }
这段代码定义了一个名称空间LevelOne,以及该名称空间中的一个名称NameOne(这里注释掉了)。在名称空间LevelOne中编写的代码可以使用NameOne来引用该名称,不需要任何分类信息。但全局名称空间中的代码必须使用分类名称LevelOne.NameOne来引用这个名称。
名称空间通常采用PascalCase命名方式。
在名称空间中,使用关键字namespace还可以定义嵌套的名称空间。嵌套的名称空间通过其层次结构来引用,并使用句点区分层次结构。
namespace LevelOne { //code in LevelOne namespace namespace LevelTwo { //code in LevelOne.LevelTwo namespace //name "NameTwo" define } } //code in global namespace
在全局名称空间中,NameTwo必须引用为LevelOne.LevelTwo.NameTwo;在LevelOne名称空间中,可以引用为LevelTwo.NameTwo;在LevelOne.LevelTwo名称空间中,可以引用为NameTwo。
创建了名称空间后,即可使用using语句简化对它们所含名称的访问。实际上,using语句的意思是“我们需要这个名称空间中的名称,所以不要每次总是要求对它分类”。例如:
namespace LevelOne { using LevelTwo; namespace LevelTwo { //name "NameTwo" defined } }
LevelOne命名空间中的代码现在可以直接使用NameTwo引用LevelTwo.NameTwo。有时,不同名称空间中的相同名称会产生冲突,此时,可以使用using语句为命名空间提供一个别名。
namespace LevelOne { using LT = LevelTwo; //name "NameTwo" defined namespace LevelTwo { //name "NameTwo" defined } }
LevelOne名称空间中的代码可以把LevelOne.NameTwo引用为NameTwo,把LevelOne.LevelTwo.NameTwo引用为LT.NameTwo。
using 语句可以应用带包含它们的名称空间,以及该名称空间中包含的嵌套命名空间。在上面的代码中,全局名称空间不能使用LT.NameTwo。但如果using语句声明如下:
using LT = LevelOne.LevelTwo; namespace LevelOne { using LT = LevelTwo; //name "NameTwo" defined namespace LevelTwo { //name "NameTwo" defined } }
全局名称空间中的代码和LevelOne名称空间中的代码就可以使用LT.NameThree。
using语句本身不能访问另一个名称空间中的名称。除非名称空间总的代码以某种方式连接到项目上,或者代码是在该项目的源文件中定义的,或在连接到该项目的其他代码中定义的,否则就不能访问其中包含的名称。另外,如果包含名称空间的代码连接到项目上,无论是否使用using,都可以访问其中包含的名称。using语句便于我们访问这些名称,减少代码量,以及提高可读性。
标签:
原文地址:http://www.cnblogs.com/haizhibin1989/p/4617518.html