型を整理する名前空間を宣言する

C# プログラミングでは、名前空間が 2 つの方法でよく使用されます。 最初の方法では、次のように .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 ディレクティブ」の記事を参照してください

2 つ目の方法では、独自の名前空間を宣言します。これは、より大きなプログラミング プロジェクトでクラス名とメソッド名のスコープを制御するのに役立ちます。 名前空間を宣言するには、以下の例のように、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# 言語仕様に関する記事の「名前空間」に関するセクションを参照してください。