namnområde

Nyckelordet namespace används för att deklarera ett omfång som innehåller en uppsättning relaterade objekt. Du kan använda ett namnområde för att organisera kodelement och skapa globalt unika typer.

namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace Nested
    {
        class SampleClass2 { }
    }
}

Med namnområdesdeklarationer med filomfattning kan du deklarera att alla typer i en fil finns i ett enda namnområde. Filomfattande namnområdesdeklarationer är tillgängliga med C# 10. Följande exempel liknar föregående exempel, men använder en deklaration för filomfattningsnamnområde:

using System;

namespace SampleFileScopedNamespace;

class SampleClass { }

interface ISampleInterface { }

struct SampleStruct { }

enum SampleEnum { a, b }

delegate void SampleDelegate(int i);

Föregående exempel innehåller inte ett kapslat namnområde. Filomfattningsnamnområden kan inte innehålla ytterligare namnområdesdeklarationer. Du kan inte deklarera ett kapslat namnområde eller ett andra filomfattningsnamnområde:

namespace SampleNamespace;

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

namespace AnotherNamespace; // Not allowed!

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

I ett namnområde kan du deklarera noll eller fler av följande typer:

Kompilatorn lägger till ett standardnamnområde. Det här namnlösa namnområdet, som ibland kallas globalt namnområde, finns i varje fil. Den innehåller deklarationer som inte ingår i ett deklarerat namnområde. Alla identifierare i det globala namnområdet är tillgängliga för användning i ett namngivet namnområde.

Namnområden har implicit offentlig åtkomst. En diskussion om de åtkomstmodifierare som du kan tilldela till element i ett namnområde finns i Åtkomstmodifierare.

Det går att definiera ett namnområde i två eller flera deklarationer. I följande exempel definieras till exempel två klasser som en del av MyCompany namnområdet:

namespace MyCompany.Proj1
{
    class MyClass
    {
    }
}

namespace MyCompany.Proj1
{
    class MyClass1
    {
    }
}

I följande exempel visas hur du anropar en statisk metod i ett kapslat namnområde.

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

Språkspecifikation för C#

Mer information finns i avsnittet Namnområden i C#-språkspecifikationen. Mer information om namnområdesdeklarationer med filomfattning finns i funktionsspecifikationen.

Se även