namespace

Klíčové namespace slovo slouží k deklaraci oboru, který obsahuje sadu souvisejících objektů. Obor názvů můžete použít k uspořádání prvků kódu a k vytváření globálně jedinečných typů.

namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace Nested
    {
        class SampleClass2 { }
    }
}

Deklarace oboru názvů s oborem souborů umožňují deklarovat, že všechny typy v souboru jsou v jednom oboru názvů. Deklarace oboru názvů s vymezeným oborem souborů jsou k dispozici v jazyce C# 10. Následující příklad je podobný předchozímu příkladu, ale používá deklaraci oboru názvů s oborem souboru:

using System;

namespace SampleFileScopedNamespace;

class SampleClass { }

interface ISampleInterface { }

struct SampleStruct { }

enum SampleEnum { a, b }

delegate void SampleDelegate(int i);

Předchozí příklad neobsahuje vnořený obor názvů. Obory názvů s oborem souborů nemůžou obsahovat další deklarace oboru názvů. Nelze deklarovat vnořený obor názvů nebo druhý obor názvů s oborem souborů:

namespace SampleNamespace;

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

namespace AnotherNamespace; // Not allowed!

namespace ANestedNamespace // Not allowed!
{
   // declarations...
}

V rámci oboru názvů můžete deklarovat nula nebo více z následujících typů:

Kompilátor přidá výchozí obor názvů. Tento nepojmenovaný obor názvů, někdy označovaný jako globální obor názvů, se nachází v každém souboru. Obsahuje deklarace, které nejsou zahrnuty do deklarovaného oboru názvů. Jakýkoli identifikátor v globálním oboru názvů je k dispozici pro použití v pojmenovaném oboru názvů.

Obory názvů mají implicitně veřejný přístup. Diskuzi o modifikátorech přístupu, které můžete přiřadit k prvkům v oboru názvů, najdete v tématu Modifikátory accessu.

Obor názvů je možné definovat ve dvou nebo více deklaracích. Následující příklad například definuje dvě třídy jako součást MyCompany oboru názvů:

namespace MyCompany.Proj1
{
    class MyClass
    {
    }
}

namespace MyCompany.Proj1
{
    class MyClass1
    {
    }
}

Následující příklad ukazuje, jak volat statickou metodu v vnořeném oboru názvů.

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

specifikace jazyka C#

Další informace najdete v části Obory názvů specifikace jazyka C#. Další informace o deklaracích oborů názvů s vymezeným oborem souborů najdete ve specifikaci funkce.

Viz také