ad alanı

anahtar namespace sözcüğü, ilgili nesneler kümesini içeren bir kapsamı bildirmek için kullanılır. Kod öğelerini düzenlemek ve genel olarak 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 bildirmenizi sağlar. Dosya kapsamlı ad alanı bildirimleri C# 10 ile kullanılabilir. Aşağıdaki örnek önceki örneğe benzer, ancak dosya kapsamlı bir 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 örnekte iç içe bir ad alanı yoktur. 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. Bazen genel ad alanı olarak da adlandırılan bu adsız ad alanı her dosyada bulunur. Bildirilen ad alanına dahil olmayan bildirimleri içerir. Genel ad alanı içindeki tüm tanımlayıcılar adlandırılmış ad alanında kullanılabilir.

Ad alanlarının örtük olarak genel erişimi vardır. Ad alanındaki öğelere atayabileceğiniz erişim değiştiricilerinin tartışması için bkz . Erişim Değiştiricileri.

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

namespace MyCompany.Proj1
{
    class MyClass
    {
    }
}

namespace MyCompany.Proj1
{
    class MyClass1
    {
    }
}

Aşağıdaki örnekte, iç içe bir ad alanında statik yöntemin nasıl çağrılacakları gösterilmektedir.

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 Ad Alanları bölümüne bakın. Dosya kapsamlı ad alanı bildirimleri hakkında daha fazla bilgi için özellik belirtimine bakın.

Ayrıca bkz.