更新:2007 年 11 月

namespace 关键字用于声明一个范围。此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的方法。

C# 复制代码
namespace SampleNamespace
{
    class SampleClass { }

    interface SampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace SampleNamespace.Nested
    {
        class SampleClass2 { }
    }
}

备注

在一个命名空间中,可以声明一个或多个下列类型:

  • 另一个命名空间

  • 接口

  • 结构

  • 枚举

  • 委托

无论您是否在 C# 源文件中显式声明了命名空间,编译器都会添加一个默认的命名空间。该未命名的命名空间(有时称为全局命名空间)存在于每一个文件中。全局命名空间中的任何标识符都可用于命名的命名空间中。

命名空间隐式具有公共访问权,并且这是不可修改的。有关可以分配给命名空间中的元素的访问修饰符的讨论,请参见访问修饰符(C# 参考)

在两个或更多的声明中定义一个命名空间是可以的。例如,下面的示例将两个类定义为 MyCompany 命名空间的一部分:

C# 复制代码
namespace MyCompany.Proj1
{
    class MyClass
    {
    }
}

namespace MyCompany.Proj1
{
    class MyClass1
    {
    }
}

示例

下面的示例显示了如何在嵌套的命名空间中调用静态方法。

C# 复制代码
namespace SomeNameSpace
{
    public class MyClass 
    {
        static void Main() 
        {
            Nested.NestedNameSpaceClass.SayHello();
        }
    }

    // a nested namespace
    namespace Nested   
    {
        public class NestedNameSpaceClass 
        {
            public static void SayHello() 
            {
                Console.WriteLine("Hello");
            }
        }
    }
}
// Output: Hello

更多信息

C# 语言规范

有关更多信息,请参见 C# 语言规范中的以下各章节:

  • 3.4.1 命名空间成员

  • 3.8 命名空间和类型名称

  • 9 命名空间

请参见