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í elementů kódu a k vytvoř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 oborů názvů v souboru umožňují deklarovat, že všechny typy v souboru jsou v jednom oboru názvů. Deklarace oborů názvů v souboru 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ůže obsahovat další deklarace oborů názvů. Nemůžete deklarovat vnořený obor názvů nebo druhý obor názvů s oborem souboru:

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 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 přístupu.

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

namespace MyCompany.Proj1
{
    class MyClass
    {
    }
}

namespace MyCompany.Proj1
{
    class MyClass1
    {
    }
}

Následující příklad ukazuje, jak volat statickou metodu ve 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 oborem souborů najdete ve specifikaci funkce.

Viz také