C#中每个命名空间和类型都具有一个完全限定名,该名称在所有其他命名空间或类型中唯一标识该命名空间或类型。命名空间的好处是可以用类型所在的命名空间来区分同名的类型,这样可以有效地防止命名冲突。这时每个类型由两部分标志:所在的命名空间和类型名。因为命名空间有父子层次,所以可能需要多个命名空间才能完全限定一种类型。
如果N是全局命名空间的成员,则它的完全限定名为N。否则,它的完全限定名为S.N,其中S 是声明了N的命名空间或类型的完全限定名。换言之,N的完全限定名是从全局命名空间开始通向N 的标识符的完整分层路径。由于命名空间或类型的每个成员都必须具有唯一的名称,因此,如果将这些成员名称置于命名空间或类型的完全限定名之后,这样构成的成员完全限定名一定符合唯一性。
命名空间类似于文件夹的概念,亦即在一个命名空间中可以包含其他命名空间。由于命名空间是用来组织代码的,所以必须层次化定义它们。方法是:在层次体系的顶层定义通用命名空间,然后在其中定义具体的命名空间。这种层次化的命名空间称为嵌套命名空间,另外命名空间和类也可以构成程序的嵌套,往往用命名空间的完全限定名来表示这种层次的命名空间。