
1.6 命名空间
命名空间(Namespace)是.NET中类的容器,也可以称作类库。面向对象编程离不开类和对象,命名空间即为存放类的容器。一个命名空间中可以有一个或多个类,同一个命名空间下的类名不能相同,但不同命名空间下可以有相同的类名。本节介绍命名空间的功能及其使用。
1.6.1 命名空间基础
命名空间是数据类型的一种组合方式,C#是面向对象编程语言,因此离不开类。但同一个项目的不同的开发人员,可能命名相同的类名来实现不同的功能,此时通过将类放在不同的命名空间下,以避免类重名引起的冲突。
通过命名空间将不同的类分类存储,能够使项目的结构更加清晰明确。在.NET Framework下有多个命名空间,可直接引用。如创建一个控制台应用程序,则在控制台的后台代码中,有如下引用命名空间的语句:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
上述代码中,“using”关键字用来引用命名空间,只有被引用的命名空间,其内部的类和方法才能被直接使用。“using”关键字后为命名空间的名称,该窗体共添加了9个命名空间。
由上述代码可以看出,该窗体所引用的命名空间都有“System”字样,除了首行以外,其他命名空间都在“System”字样后添加圆点及其他名称。
命名空间是可以嵌套的,因此代码引用中,有着嵌套的命名空间。但命名空间的嵌套与其内部类和方法的使用没有关联,它们属于不同的命名空间。常见的命名空间及其介绍如表1-2所示。
表1-2 常用命名空间及其说明

1.6.2 命名空间的使用
命名空间写在.cs文件下,使用关键字“namespace”来定义。命名空间下有一个或多个类,类使用关键字“class”来定义。
命名空间和类的定义都是在关键字后添加自定义的(命名空间/类)名称,接着是大括号{}。在大括号内部定义命名空间或类的具体内容。如定义一个命名空间Fruit和其内部的两个类Apple和Banana,代码如下:
namespace Fruit { class Apple { } class Banana { } }
命名空间是可以嵌套使用的,其嵌套的使用有两种方式。如上述代码中,将命名空间Fruit放在命名空间Food的内部,Fruit命名空间的应用需要使用“using Food.Fruit”。其定义代码有两种方式,如下所示。
□ 直接使用嵌套的命名空间名称
namespace Food.Fruit { class Apple { } class Banana { } }
□ 使用命名空间的嵌套
namespace Food { namespace Fruit { class Apple { } class Banana { } } }
命名空间是可以扩充的,可在不同文件下定义同一个命名空间中的类。如上述代码可以在不同文件下分别定义类Apple和类Banana,代码如下:
namespace Food.Fruit { class Apple { } } //下面代码在另一个文件下 namespace Food.Fruit { class Banana { } }
上述代码中,“//”后面的语句为注释语句,程序在运行时跳过不执行语句,通常用于对程序的解释。代码中的注释将在本书第2章详细介绍。