Udostępnij za pośrednictwem


Używanie przestrzeni nazw (Przewodnik programowania w języku C#)

Przestrzenie nazw silnie są używane w ramach programów C# na dwa sposoby.Po pierwsze.NET Framework klas używać nazw do organizowania jej wiele klas.Po drugie deklarowanie własne przestrzenie nazw może kontrolować zakres klasy i metody nazwy w dużych projektach programowania.

Uzyskiwanie dostępu do obszarów nazw

Większość aplikacji C# zaczynają się od sekcji z using dyrektyw.W tej sekcji przedstawiono nazw często się przy użyciu aplikacji i zapisuje programista z określania przy każdym użyciu metody, która znajduje się w pełni kwalifikowanej nazwy.

Na przykład umieszczając linii:

using System;

Na początku programu programisty, można użyć kodu:

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

Zamiast:

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

Aliasy nazw

using — Dyrektywa (odwołanie w C#) Może również służyć do utworzenia aliasu dla obszaru nazw.Na przykład jeśli używasz uprzednio pisemnej obszaru nazw, który zawiera zagnieżdżonych nazw może być zadeklarować alias zapewnienie skróconą sposób odwoływania się do jednego w szczególności, jak w poniższym przykładzie:

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

Korzystanie z przestrzeni nazw, aby zakres kontroli

namespace Zostanie użyte słowo kluczowe, aby zadeklarować zakresu.Możliwość tworzenia zakresów w ramach projektu pomaga organizować kodu i umożliwia utworzenie typów globalnie unikatowa.W poniższym przykładzie zatytułowany klasy SampleClass jest zdefiniowany w dwóch obszarów nazw, jeden zagnieżdżone wewnątrz drugiej.. — Operator (odwołanie w C#) Jest używana do rozróżnienia, w którym metoda jest wywoływana.

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();
        }
    }
}

W pełni kwalifikowane nazwy

Obszary nazw i typów mają unikatowe tytuły opisane w pełni kwalifikowane nazwy, które wskazują w logiczną hierarchię.Na przykład, instrukcja A.B oznacza, że A jest nazwą obszaru nazw lub typ i B jest zagnieżdżona wewnątrz niego.

W poniższym przykładzie są zagnieżdżone klas i przestrzenie nazw.W pełni kwalifikowana nazwa jest oznaczony jako komentarz, po każdej jednostki.

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

W poprzednich segmentu kodu:

  • Obszar nazw N1 jest członkiem grupy globalnej przestrzeni nazw.Jego w pełni kwalifikowana nazwa jest N1.

  • Obszar nazw N2 jest członkiem N1.Jego w pełni kwalifikowana nazwa jest N1.N2.

  • Klasa C1 jest członkiem N1.Jego w pełni kwalifikowana nazwa jest N1.C1.

  • Nazwa klasy C2 jest używane dwa razy w tym kodzie.Jednakże w pełni kwalifikowane nazwy są unikatowe.Pierwsze wystąpienie C2 jest zadeklarowana wewnątrz C1; w związku z tym, jest jego w pełni kwalifikowanej nazwy: N1.C1.C2.Drugie wystąpienie C2 jest zadeklarowana wewnątrz obszaru nazw N2; w związku z tym, jego w pełni kwalifikowana nazwa jest N1.N2.C2.

Przy użyciu poprzedniego kodu segmentu, można dodać nowego członka klasy C3, z obszarem nazw N1.N2 w następujący sposób:

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

Ogólnie rzecz biorąc, korzystać z :: Aby odwołać się za alias obszaru nazw lub global:: Aby odwołać się do globalnego obszaru nazw i . do zakwalifikowania typów lub członków.

Jest błędem, aby użyć :: alias odwołuje się do typu, zamiast przestrzeni nazw.Na przykład:

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

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

Należy pamiętać, że wyraz global nie jest wstępnie zdefiniowanego aliasu; w związku z tym global.X nie ma żadnego specjalnego znaczenia.Nabywa, specjalne znaczenie, tylko wtedy, gdy jest używany z ::.

Kompilator ostrzeżenia CS0440 jest generowany, gdy definiujesz alias o nazwie globalnego ponieważ global:: zawsze odwołuje się do globalnej przestrzeni nazw, a nie do aliasu.Na przykład poniższy wiersz generuje ostrzeżenie:

using global = System.Collections;   // Warning

Za pomocą :: z aliasów jest dobrym pomysłem i chroni przed wprowadzaniem nieoczekiwane dodatkowe typy.Na przykład rozważmy następujący przykład:

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

To działa, ale typ o nazwie Alias później zostaną wprowadzone, Alias. byłoby zamiast bind do tego typu.Za pomocą Alias::Exception gwarantują, że Alias jest traktowana jako alias obszaru nazw, a nie mylone dla typu.

Zobacz temat Porady: użycie globalnych aliasów przestrzeni nazw (Przewodnik programowania w języku C#) Aby uzyskać więcej informacji dotyczących global alias.

Zobacz też

Informacje

Przestrzenie nazw (Przewodnik programowania w języku C#)

Słowa kluczowe przestrzeni nazw (odwołanie w C#)

. — Operator (odwołanie w C#)

Operator :: (odwołanie w C#)

extern (odwołanie w C#)

Koncepcje

Przewodnik programowania w języku C#