与文件或组件不同,名称空间是一种逻辑组合, 而不是物理组合。 在c#文件中定义类时, 可以把它包括在名称空间定义中。
以后, 在定义另一个类时, 就可以在同一个名称空间中包含它, 创建一个逻辑组合,该组合告诉使用类的其他开发人员,这两个
类是如何相关的以及如何使用它们的:
namespace CustomerPhoneBookApp
{
public struct Subvscriber
{
// Code for struct here...
}
}
把一个类型放在名称空间中, 可以有效地给这个类型指定一个较长的名称, 该名称包括类型的名称空间, 名称空间之间用
句点(.) 隔开, 最后是类名。 在上面的例子中, Subscriber 结构的全名是 CustomerPhoneBookApp.Subscriber. 这样有相同
短名的不同类就可以在同一个程序中使用了。 全名常常称为完全限定的名称。
也可以在名称空间中嵌套其他命名空间, 为类型创建层次结构:
namespace Wrox
{
namespace ProCSharp
{
namespace Basics
{
class NamespaceExample
{
// Code for the class here...
}
}
}
}
每个名称空间名都由它所在名称空间的名称组成, 这些名称用句点分隔开, 开头是最外层的名称空间, 最后是它自己的短名。
所以 ProCSharp 名称空间的全名是 Wrox.ProCSharp ,
NamespaceExample 类的全名是 Wrox.ProCSharp.Basics.NamespaceExample 。
使用这个语法也可以在自己的名称空间定义中组织名称空间, 所以上面的代码也可以写为:
namespace Wrox.ProCSharp.Basics
{
class NamespaceExample
{
// Code for the class here...
}
}
名称空间与程序集无关。 同一个程序集中可以有不同的名称空间, 也可以在不同的程序集中定义同一个名称空间中的类型。
应在开始一个项目之前就计划定义名称空间的层次结构。 一般可接受的格式是 CompanyName.ProjectName.SystemSection。
所以在上面的例子中, Wrox 是公司名, ProCSharp 是项目, 对于本章 Basics 是部分名。