Aracılığıyla paylaş


namespace anahtar sözcüğü

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. 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);

Dosya Kapsamlı Ad Alanları içinde Deyimleri Kullanma

dosya kapsamına sahip ad alanları kullandığınızda, deyimlerinin yerleştirilmesi, dosya içindeki kapsamlarını etkiler. Dosya kapsamlı ad alanları, dosyanın sonunda bir kapatma köşeli ayracı ile biten eşdeğer geleneksel ad alanı bildirimine daha düşük olur. Bu davranış, yönergelerin nereye uygulanacağını using aşağıdaki gibi belirler:

  • using deyimleri dosya kapsamlı ad alanı bildiriminden önce yerleştirilirse, bunlar ad alanının dışında kabul edilir ve tam nitelikli ad alanları olarak yorumlanır.
  • using deyimleri dosya kapsamlı ad alanı bildiriminden sonra yerleştirilirse, bunların kapsamı ad alanının kendi içindedir.

Örneğin:

// This using is outside the namespace scope, so it applies globally
using System;

namespace SampleNamespace; // File-scoped namespace declaration

// This using is inside the namespace scope
using System.Text;

public class SampleClass
{
    // Class members...
}

Yukarıdaki örnekte, System genel olarak erişilebilirken, System.Text yalnızca SampleNamespaceiçinde geçerlidir.

Yukarıdaki örnekte iç içe bir ad alanı yoktur. Dosya kapsamlı ad alanları daha fazla ad alanı bildirimi içeremez. İç içe bir ad alanı veya ikinci bir dosya düzeyinde 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.