名称空间:是.NET提供应用程序代码容器的方式,这样,代码及其内内容就可以唯一的标识。也可以用做.NET FRAMEWORK中给项目分类的一种方式,大多数项目都是类型定义,例如简单类型System.Int32。
在默认情况下,C#代码包含在全局名称空间中。这意味着:对于包含在这段代码中的项目,只要按照名称进行引用,就可以由全局名称空间中的其他代码访问他们。
可以使用namespace关键字为花括号中的代码块显式的定义名称空间。如果在该名称空间代码外部使用名称空间中的名字,就必须写出该名称空间的限定名称。
限定名称包含它所有的继承信息。这意味着:如果一个名称空间中的代码需要使用在另一个名称空间中定义的名称,就必须包括对该名称空间的引用。限定名称在不同的名称空间级别之间使“.”点字符。
在名称空间中,可以使用关键字namespace定义嵌套的名称空间,嵌套的名称空间通过其层次结构来应用。使用“.”点字符来区分层次结构的层次。
例如:
namespace LevelOne
{
//code in LevelOne namespace;
namespace LevelTwo
{
//code in LevelOne.LevelTwo namespace;
//name "NameTwo" defined;
}
}
//code in global namespace;
其中:NameTwo的引用
在全局名称空间中,必须应用为“LevelOne.LevelTwo.NameTwo”,
在namespace LevelOne名称空间中,可以引用为“LevelTwo.NameTwo”,
在namespace LevelOne LevelTwo名称空间中,可以直接引用为“NameTwo”。
注意:名称是在名称空间中唯一定义的,可以在LevelOne和LevelTwo中定义名称NameThree。
建立了名称空间后,就可以使用using语句简化对它们包含的名称的访问。实际上,using语句的意思是“ok,我们需要这个名称空间的名称,所以不要每次总是要求对它们分类。”。
例如:
namespace LevelOne
{
using LT = LevelTwo; //为空间LevelTwo指定一个别名。
//name "NameThree" defined;
namespace LevelTwo
{
//name "NameTwo" defined
//name "NameThree" defined
}
}
通过使用using,levelOne名称空间中的代码可以简单使用NameTwo引用LevelTwo.NameTwo。
有时候,与上面的NameThree范例一样,不同名称空间中的相同名称会产生错误,此时,可以为名称空间提供一个别名,作为using 语句的一部分,LevelOne名称空间中的代码可以把LevelOne.nameThree引用为“NameThree”,把LevelOne.LevelTwo.NameThree引用为LT.nameThree。
using语句可以应用到包含他们的名称空间,以及该名称空间包含的嵌套名称空间中。在上面的代码中,全局名称空间不能使用LT.NameThree,但是如果这样声明:
using LT = LevelOne.LevelTwo
namespace LevelOne
{
//name "NameThree" defined;
namespace LevelTwo
{
//name "NameTwo" defined
//name "NameThree" defined
}
}
这样,全局名称中的代码与LevelOne中的代码,都可以使用LT.NameThree来引用LevelOne.LevelTwo.NameThree了。
现在看下在C#中使用的代码:
using System
namespace consoleApplication1
{
.....
}
第一行中使用using声明:在这段C#代码中使用System名称空间。而且它可以在该文件的所有名称空间中访问,无须分类。System名称空间是.Net Framework应用程序的根名称空间。包含控制台应用程序所需要的所有的基本功能。
第二行中使用的namespace是为这个应用程序consoleApplication1本身程序代码声名的名称空间。
浙公网安备 33010602011771号