namespace 关键字用于声明包含一组相关对象的作用域。可以使用命名空间来组织代码元素并创建全局唯一类型。

namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate ( int i );

    namespace Nested
    {
        class SampleClass2 { }
    }
}

文件范围的命名空间声明使你能够作出以下声明:一个文件中的所有类型都在一个命名空间中。C# 10 中可使用文件范围的命名空间声明。以下示例与前面的示例类似,但使用了一个文件范围的命名空间声明:

using System;

namespace SampleFileScopedNamespace;

class SampleClass { }

interface ISampleInterface { }

struct SampleStruct { }

enum SampleEnum { a, b }

delegate void SampleDelegate(int i);

使用文件作用域命名空间中的语句

使用文件范围的命名空间时,语句的位置 using 会影响其在文件中的范围。文件范围的命名空间低于等效的传统命名空间声明,该声明以文件末尾的右括号结尾。此行为确定在何处 using 应用指令,如下所示:

  • 如果语句 using 放置在文件范围的命名空间声明之前,则它们被视为不在命名空间之外,并解释为完全限定的命名空间。
  • 如果在文件范围的命名空间声明之后放置这些 using 语句,则它们的范围在命名空间本身内。

例如:

// 这种使用是在命名空间作用域之外的,因此它适用于全局
using System;

namespace SampleNamespace; // 文件作用域的命名空间声明

// 这种使用是在命名空间作用域中
using System.Text;

public class SampleClass
{
    // Class members...
}

在上面的示例中,System 全局可访问,而 System.Text 仅适用于 .SampleNamespace。

前面的示例不包括嵌套命名空间。文件范围的命名空间不能包含其他命名空间声明。不能声明嵌套的命名空间或第二个文件范围的命名空间:

namespace SampleNamespace;

class AnotherSampleClass
    {
        public void AnotherSampleMethod()
            {
                Console . WriteLine ( "例子空间内的例子方法");
            }
    }

namespace AnotherNamespace; // 不允许!

namespace ANestedNamespace // 不允许!
{
   // 声明……
}

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

  • class
  • interface
  • struct
  • enum
  • delegate
  • 可以声明嵌套的命名空间(文件范围的命名空间声明除外)

编译器会添加默认命名空间。此未命名的命名空间(有时被称为全局命名空间)存在于每个文件中。它包含未包含在已声明的命名空间中的声明。全局命名空间中的任何标识符都可用于已命名的命名空间。

命名空间隐式具有公共访问权限。

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

namespace MyCompany.Proj1
{
    class MyClass
        {
        }
}

namespace MyCompany.Proj1
{
    class MyClass1
        {
        }
}

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

namespace SomeNameSpace
    {
        public class MyClass
        {
            static void Main()
                {
                    Nested.NestedNameSpaceClass.SayHello();
                }
        }

    // 嵌套的空间
    namespace Nested
        {
            public class NestedNameSpaceClass
                {
                    public static void SayHello()
                        {
                            Console.WriteLine("你好啊!");
                        }
                }
        }
    }

兔子码农
4 声望1 粉丝

一个酒晕子