声明命名空间来整理类型

在 C# 编程中,命名空间在两个方面被大量使用。 首先,.NET 使用命名空间来组织它的许多类,如下所示:

System.Console.WriteLine("Hello World!");

System 是一个命名空间,Console 是该命名空间中的一个类。 可使用 using 关键字,这样就不必使用完整的名称,如下例所示:

using System;
Console.WriteLine("Hello World!");

有关详细信息,请参阅 using 指令

重要

适用于 .NET 6 的 C# 模板使用顶级语句。 如果你已升级到 .NET 6,则应用程序可能与本文中的代码不匹配。 有关详细信息,请参阅有关新 C# 模板生成顶级语句的文章

.NET 6 SDK 还为使用以下 SDK 的项目添加了一组隐式 指令:

  • Microsoft.NET.Sdk
  • Microsoft.NET.Sdk.Web
  • Microsoft.NET.Sdk.Worker

这些隐式 global using 指令包含项目类型最常见的命名空间。

有关详细信息,请参阅隐式 using 指令一文

其次,在较大的编程项目中,声明自己的命名空间可以帮助控制类和方法名称的范围。 使用 namespace 关键字可声明命名空间,如下例所示:

namespace SampleNamespace
{
    class SampleClass
    {
        public void SampleMethod()
        {
            System.Console.WriteLine(
                "SampleMethod inside SampleNamespace");
        }
    }
}

命名空间的名称必须是有效的 C# 标识符名称

从 C# 10 开始,可以为该文件中定义的所有类型声明一个命名空间,如以下示例所示:

namespace SampleNamespace;

class AnotherSampleClass
{
    public void AnotherSampleMethod()
    {
        System.Console.WriteLine(
            "SampleMethod inside SampleNamespace");
    }
}

这种新语法的优点是更简单,这节省了水平空间且不必使用大括号。 这使得你的代码易于阅读。

命名空间概述

命名空间具有以下属性:

  • 它们组织大型代码项目。
  • 通过使用 . 运算符分隔它们。
  • using 指令可免去为每个类指定命名空间的名称。
  • global 命名空间是“根”命名空间:global::System 始终引用 .NET System 命名空间。

C# 语言规范

有关详细信息,请参阅 C# 语言规范中的命名空间部分。