Sdílet prostřednictvím


Použití oboru názvů (Průvodce programováním v C#)

Obory názvů jsou silně používá v rámci programů C# dvěma způsoby.Za prvé.NET Framework třídy slouží k uspořádání jeho mnoho tříd oborů názvů.Jednak deklarování vlastní jmenné prostory umožňují omezit názvy oboru, třídy a metody ve větších projektů programování.

Přístup k oboru názvů

Většina aplikací C# začínají část using směrnic.Tato část obsahuje seznam oborů názvů, že aplikace bude často pomocí a ukládá programátor z určení při každém použití metody, která je součástí plně kvalifikovaný název.

Například zahrnutím řádku:

using System;

Při spuštění programu můžete použít programátor kód:

Console.WriteLine("Hello, World!");

Namísto:

System.Console.WriteLine("Hello, World!");

Obor názvů aliasů

using – direktiva (Referenční dokumentace jazyka C#) Lze také vytvořit pro alias oboru názvů.Například pokud používáte již napsané obor názvů obsahující vnořené obory názvů, můžete deklarovat alias poskytnout zjednodušený způsob odkazování jeden, jako v následujícím příkladu:

using Co = Company.Proj.Nested;  // define an alias to represent a namespace

Použití jmenného prostoru řízení oboru

namespace Deklarovat obor se používá klíčové slovo.Schopnost vytvářet obory v rámci projektu pomůže uspořádat kód a umožňuje vytvořit typy globálně jedinečný.V následujícím příkladu třídu s názvem SampleClass je definován v dvěma obory názvů, jeden vnořený v druhé.. – operátor (Referenční dokumentace jazyka C#) Slouží k rozlišení, která metoda volána.

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

    // Create a nested namespace, and define another class. 
    namespace NestedNamespace
    {
        class SampleClass
        {
            public void SampleMethod()
            {
                System.Console.WriteLine(
                  "SampleMethod inside NestedNamespace");
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Displays "SampleMethod inside SampleNamespace."
            SampleClass outer = new SampleClass();
            outer.SampleMethod();

            // Displays "SampleMethod inside SampleNamespace."
            SampleNamespace.SampleClass outer2 = new SampleNamespace.SampleClass();
            outer2.SampleMethod();

            // Displays "SampleMethod inside NestedNamespace."
            NestedNamespace.SampleClass inner = new NestedNamespace.SampleClass();
            inner.SampleMethod();
        }
    }
}

Plně kvalifikované názvy

Obory názvů a typů mají jedinečné názvy popsaná plně kvalifikované názvy, které označují logické hierarchie.Například příkaz A.B vyplývá, že A je název typu nebo oboru názvů a B je vnořená uvnitř.

V následujícím příkladu jsou vnořené třídy a obory názvů.Plně kvalifikovaný název je označen jako komentář po každé entity.

namespace N1     // N1
{
    class C1      // N1.C1
    {
        class C2   // N1.C1.C2
        {
        }
    }
    namespace N2  // N1.N2
    {
        class C2   // N1.N2.C2
        {
        }
    }
}

Předchozí kód segmentu:

  • Obor názvů N1 je členem globální obor názvů.Jeho plně kvalifikovaný název je N1.

  • Obor názvů N2 je členem N1.Jeho plně kvalifikovaný název je N1.N2.

  • Třída C1 je členem N1.Jeho plně kvalifikovaný název je N1.C1.

  • Název třídy C2 v tomto kódu je použit dvakrát.Plně kvalifikované názvy jsou však jedinečný.První výskyt C2 je deklarována uvnitř C1; Proto je jeho plně kvalifikovaný název: N1.C1.C2.Druhý výskyt C2 je deklarována v rámci oboru názvů N2; Proto je jeho plně kvalifikovaný název N1.N2.C2.

Pomocí předchozího kódu segmentu, můžete přidat nový člen třídy C3, k oboru názvů N1.N2 takto:

namespace N1.N2
{
    class C3   // N1.N2.C3
    {
    }
}

Používejte :: odkazuje alias oboru názvů nebo global:: odkaz globální obor názvů a . vymezující typy nebo členy.

Jedná se o chybu pomocí :: s aliasem, která odkazuje na typ namísto oboru názvů.Příklad:

using Alias = System.Console;
class TestClass
{
    static void Main()
    {
        // Error 
        //Alias::WriteLine("Hi");

        // OK
        Alias.WriteLine("Hi");
    }
}

Pamatujte, že slovo global není předdefinované alias; proto global.X nemá žádné zvláštní význam.Získá zvláštní význam pouze v případě, že se používá s ::.

Kompilátoru upozornění CS0440 je generována při definování aliasu s názvem globální protože global:: vždy odkazuje na globální obor názvů, nikoli na alias.Například generuje následující upozornění:

using global = System.Collections;   // Warning

Pomocí :: s aliasy je vhodné a chrání proti zavlečení neočekávané další typy.Zvažte například tento příklad:

using Alias = System;
namespace Library
{
    public class C : Alias.Exception { }
}

Toto funguje, ale pokud typ s názvem Alias byly následně zavedena, Alias. by místo toho vazbu typu.Pomocí Alias::Exception pojistitelům, Alias je považován za alias oboru názvů a nebudou omylem považovány za typu.

Naleznete v tématu Postupy: Použití aliasu globálního oboru názvů (Průvodce programováním v C#) Další informace týkající global alias.

Viz také

Referenční dokumentace

Obory názvů (Průvodce programováním v C#)

Klíčová slova oboru názvů (Referenční dokumentace jazyka C#)

. – operátor (Referenční dokumentace jazyka C#)

:: – operátor (Referenční dokumentace jazyka C#)

extern (Referenční dokumentace jazyka C#)

Koncepty

Průvodce programováním v C#