主要是提供名字界限,用来避免名字冲突的譬如你叫张三,另一个人也叫张三,怎么区分你们俩呢?我们可以用你们的出生地来区分,我们可以叫你是江苏的张三,他是湖北的张三。如果你们俩同是江苏的,我们可以叫你是南京的张三,他是扬州的张三。这里的地名就是一种命名空间,你们俩在不同的命名空间(地名)里,这样我们就可以区分你们俩了如果你们俩是同一大学的,但不同系,那么我们可以叫你是物理系的张三,他是数学系的张三。这里的系名就是一种命名空间,你们俩在不同的命名空间(系)里,这样我们就可以区分你们俩了通过命名空间我们可以从逻辑上把一个系统分类,譬如把跟Web有关的东西放一起(System.Web),把Windows有关的东西放一起(System.Windows.Forms)在Web中我们有一个类叫Control,在Windows中我们也有一个类叫Control,我们怎么区分它们呢?用所属的命名空间,System.Windows.Form.Control类与System.Web.UI.Control类是不同的类别
加上了namespace可以把使用的类限定在某命名空间上!
如:在a空间有类名ClassTest
在b空间也有类名ClassTest
可以这样区别:
a.ClassTest
b.ClassTest通过Name导入名称空间你可以省略前面部分:
如:
类a.ClassTest
如果在文件上面加入using a
类可以写成ClassTest
type-declarations
}
此处: name, name1
命名空间名可以是任何合法的标识符。命名空间名可以包含句号。
type-declarations
在一个命名空间中,可以声明一个或多个下列类型:
另一个命名空间
class
interface
struct
enum
delegate
备注
即使未显式声明命名空间,也会创建默认的命名空间。该未命名的命名空间(有时称为全局命名空间)存在于每一个文件中。全局命名空间中的任何标识符都可用于命名的命名空间中。命名空间隐式具有公共访问权,并且这是不可修改的。 有关可以分配给命名空间元素的访问修饰符的论述,请参阅访问修饰符。在两个或更多的声明中定义一个命名空间是可以的。例如,下面的示例将两个类都定义为 MyCompany 命名空间的一部分:namespace MyCompany.Proj1
{
class MyClass
{
}
}namespace MyCompany.Proj1
{
class MyClass1
{
}
}
示例
下面的示例显示了如何在嵌套的命名空间中调用静态方法。// cs_namespace_keyword.cs
using System;
namespace SomeNameSpace
{
public class MyClass
{
public static void Main()
{
Nested.NestedNameSpaceClass.SayHello();
}
} namespace Nested // a nested namespace
{
public class NestedNameSpaceClass
{
public static void SayHello()
{
Console.WriteLine("Hello");
}
}
}
}
输出
Hellofrom .net Help
此外,命名空间还象c语言里的#include