ad alanı

namespaceAnahtar sözcüğü, ilgili nesneler kümesini içeren bir kapsamı bildirmek için kullanılır. Kod öğelerini düzenlemek ve genel benzersiz türler oluşturmak için bir ad alanı kullanabilirsiniz.

namespace SampleNamespace
{
    class SampleClass { }

    interface ISampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace Nested
    {
        class SampleClass2 { }
    }
}

Dosya kapsamlı ad alanı bildirimleri , bir dosyadaki tüm türlerin tek bir ad alanında olduğunu bildirmenize olanak tanır. Dosya kapsamlı ad alanı bildirimleri C# 10 ile kullanılabilir. Aşağıdaki örnek, önceki örneğe benzerdir, ancak bir dosya kapsamlı ad alanı bildirimi kullanır:

using System;

namespace SampleFileScopedNamespace;

class SampleClass { }

interface ISampleInterface { }

struct SampleStruct { }

enum SampleEnum { a, b }

delegate void SampleDelegate(int i);

Yukarıdaki örnek, iç içe geçmiş bir ad alanı içermez. Dosya kapsamlı ad alanları ek ad alanı bildirimleri içeremez. İç içe bir ad alanı veya ikinci bir dosya kapsamlı ad alanı bildiremezsiniz:

namespace SampleNamespace;

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

namespace AnotherNamespace; // Not allowed!

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

Bir ad alanı içinde, aşağıdaki türlerden sıfır veya daha fazlasını bildirebilirsiniz:

Derleyici varsayılan bir ad alanı ekler. Her zaman genel ad alanı olarak adlandırılan bu adlandırılmamış ad alanı her dosyada mevcuttur. Belirtilen bir ad alanına dahil olan bildirimleri içerir. Genel ad alanındaki herhangi bir tanımlayıcı, adlandırılmış bir ad alanında kullanılmak üzere kullanılabilir.

Ad alanlarında örtülü olarak genel erişim vardır. Bir ad alanındaki öğelere atayabileceğiniz erişim değiştiricilerine ilişkin bir tartışma için bkz. erişim değiştiricileri.

İki veya daha fazla bildirim içinde bir ad alanı tanımlamak mümkündür. Örneğin, aşağıdaki örnek, ad alanının parçası olarak iki sınıfı tanımlar MyCompany :

namespace MyCompany.Proj1
{
    class MyClass
    {
    }
}

namespace MyCompany.Proj1
{
    class MyClass1
    {
    }
}

Aşağıdaki örnek, iç içe bir ad alanında statik bir yöntemin nasıl çağrılacağını gösterir.

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

C# dili belirtimi

Daha fazla bilgi için C# dil belirtiminin namespaces bölümüne bakın. Dosya kapsamlı ad alanı bildirimleri hakkında daha fazla bilgi için bkz. özellik belirtimi.

Ayrıca bkz.