Sdílet prostřednictvím


Klíčové slovo namespace

Pomocí klíčového namespace slova deklarujte obor, který obsahuje sadu souvisejících objektů. Pomocí oboru názvů uspořádejte prvky kódu a vytvořte globálně jedinečné typy.

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ů. 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);

Referenční dokumentace jazyka C# dokumentuje naposledy vydané verze jazyka C#. Obsahuje také počáteční dokumentaci k funkcím ve verzi Public Preview pro nadcházející jazykovou verzi.

Dokumentace identifikuje všechny funkce, které byly poprvé představeny v posledních třech verzích jazyka nebo v aktuálních verzích Public Preview.

Návod

Informace o tom, kdy byla funkce poprvé představena v jazyce C#, najdete v článku o historii verzí jazyka C#.

Using statements in file-scoped namespaces

Když použijete názvové prostory s rozsahem souboru, umístění příkazů using ovlivňuje jejich platnost v rámci souboru. Obory názvů s oborem souborů jsou nižší na ekvivalentní tradiční deklaraci oboru názvů, která končí pravou závorkou na konci souboru. Toto chování určuje, kde using se direktivy použijí takto:

  • Pokud příkazy umístíte using před deklaraci oboru názvů s oborem souborů, považují se za mimo obor názvů a interpretují se jako plně kvalifikované obory názvů.
  • Pokud příkazy umístíte using za deklaraci oboru názvů s oborem souborů, budou vymezeny v rámci samotného oboru názvů.

Příklad:

// This using is outside the namespace scope, so it applies globally
using System;

namespace SampleNamespace; // File-scoped namespace declaration

// This using is inside the namespace scope
using System.Text;

public class SampleClass
{
    // Class members...
}

V předchozím příkladu je System globálně přístupný, zatímco System.Text platí pouze v rámci SampleNamespace.

Předchozí příklad neobsahuje vnořený obor názvů. Názvové prostory omezené na soubor nemohou obsahovat více deklarací názvového prostoru. Nelze deklarovat vnořený obor názvů ani druhý obor názvů na úrovni 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 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é