namespace (C# リファレンス)namespace (C# Reference)

namespace キーワードは、関連する一連のオブジェクトを含む範囲を宣言するために使用されます。The namespace keyword is used to declare a scope that contains a set of related objects. 名前空間を利用し、コード要素を整理したり、グローバルに一意の型を作成したりできます。You can use a namespace to organize code elements and to create globally unique types.

namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace Nested
    {
        class SampleClass2 { }
    }
}

注釈Remarks

名前空間内では、以下の型を 0 個以上宣言できます。Within a namespace, you can declare zero or more of the following types:

C# ソース ファイル内に名前空間を明示的に宣言しているかどうかに関係なく、コンパイラは既定の名前空間を追加します。Whether or not you explicitly declare a namespace in a C# source file, the compiler adds a default namespace. この無名の名前空間はグローバル名前空間とも呼ばれますが、すべてのファイルに存在します。This unnamed namespace, sometimes referred to as the global namespace, is present in every file. グローバル名前空間内にある識別子は、名前付き名前空間で利用できます。Any identifier in the global namespace is available for use in a named namespace.

名前空間には暗黙的にパブリック アクセスが設定されます。この属性は変更できません。Namespaces implicitly have public access and this is not modifiable. 名前空間内の要素に割り当てることができるアクセス修飾子については、「アクセス修飾子」を参照してください。For a discussion of the access modifiers you can assign to elements in a namespace, see Access Modifiers.

名前空間は、2 つ以上の宣言で定義できます。It is possible to define a namespace in two or more declarations. たとえば、次の例では、MyCompany 名前空間の一部として 2 つのクラスを定義しています。For example, the following example defines two classes as part of the MyCompany namespace:

namespace MyCompany.Proj1
{
    class MyClass
    {
    }
}

namespace MyCompany.Proj1
{
    class MyClass1
    {
    }
}

Example

入れ子になった名前空間で静的なメソッドを呼び出す方法の例を次に示します。The following example shows how to call a static method in a nested namespace.

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# language specification

詳細については、C# 言語仕様に関する記事の「名前空間」に関するセクションを参照してください。For more information, see the Namespaces section of the C# language specification.

関連項目See also