Udostępnij za pośrednictwem


namespace

Słowo namespace kluczowe służy do deklarowania zakresu zawierającego zestaw powiązanych obiektów. Przestrzeń nazw umożliwia organizowanie elementów kodu i tworzenie globalnie unikatowych typów.

namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace Nested
    {
        class SampleClass2 { }
    }
}

Deklaracje przestrzeni nazw o zakresie plików umożliwiają zadeklarowanie, że wszystkie typy w pliku znajdują się w jednej przestrzeni nazw. Deklaracje przestrzeni nazw o zakresie plików są dostępne w języku C# 10. Poniższy przykład jest podobny do poprzedniego przykładu, ale używa deklaracji przestrzeni nazw o zakresie pliku:

using System;

namespace SampleFileScopedNamespace;

class SampleClass { }

interface ISampleInterface { }

struct SampleStruct { }

enum SampleEnum { a, b }

delegate void SampleDelegate(int i);

Powyższy przykład nie zawiera zagnieżdżonej przestrzeni nazw. Przestrzenie nazw o zakresie plików nie mogą zawierać dodatkowych deklaracji przestrzeni nazw. Nie można zadeklarować zagnieżdżonej przestrzeni nazw ani drugiej przestrzeni nazw o zakresie plików:

namespace SampleNamespace;

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

namespace AnotherNamespace; // Not allowed!

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

W przestrzeni nazw można zadeklarować zero lub więcej z następujących typów:

Kompilator dodaje domyślną przestrzeń nazw. Ta nienazwana przestrzeń nazw, czasami nazywana globalną przestrzenią nazw, znajduje się w każdym pliku. Zawiera deklaracje nieuwzględniane w zadeklarowanej przestrzeni nazw. Dowolny identyfikator w globalnej przestrzeni nazw jest dostępny do użycia w nazwanej przestrzeni nazw.

Przestrzenie nazw niejawnie mają dostęp publiczny. Aby zapoznać się z omówieniem modyfikatorów dostępu, które można przypisać do elementów w przestrzeni nazw, zobacz Modyfikatory dostępu.

Można zdefiniować przestrzeń nazw w co najmniej dwóch deklaracjach. Na przykład w poniższym przykładzie zdefiniowano dwie klasy w ramach MyCompany przestrzeni nazw:

namespace MyCompany.Proj1
{
    class MyClass
    {
    }
}

namespace MyCompany.Proj1
{
    class MyClass1
    {
    }
}

W poniższym przykładzie pokazano, jak wywołać metodę statyczną w zagnieżdżonej przestrzeni nazw.

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

specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz sekcję Przestrzenie nazw specyfikacji języka C#. Aby uzyskać więcej informacji na temat deklaracji przestrzeni nazw o zakresie plików, zobacz specyfikację funkcji.

Zobacz też