Erişilebilirlik Etki Alanı (C# Başvurusu)

Üyenin erişilebilirlik etki alanı, bir üyeye hangi program bölümlerinde başvurulabileceğini belirtir. Üye başka bir tür içinde iç içe yerleştirilmişse, erişilebilirlik etki alanı hem üyenin erişilebilirlik düzeyi hem de hemen içeren türün erişilebilirlik etki alanı tarafından belirlenir.

En üst düzey türün erişilebilirlik etki alanı, en azından içinde bildirilir projenin program metnidir. Başka bir ifadeyle, etki alanı bu projenin tüm kaynak dosyalarını içerir. İç içe türün erişilebilirlik etki alanı, en azından bildirildiği türün program metnidir. Diğer bir ifadeyle, etki alanı tüm iç içe türleri içeren tür gövdesidir. İç içe türün erişilebilirlik etki alanı hiçbir zaman içeren türün etki alanını aşmaz. Bu kavramlar aşağıdaki örnekte gösterilmiştir.

Örnek

Bu örnek, bir üst düzey türü, T1ve iki iç içe sınıf M1 ve M2içerir. Sınıflar, farklı bildirilen erişim özelliklerine sahip alanlar içerir. yönteminde Main bir açıklama, her üyenin erişilebilirlik etki alanını belirtmek için her deyimi izler. Erişilemeyen üyelere başvurmaya çalışan deyimlerin açıklama satırı olduğuna dikkat edin. Erişilemeyen bir üyeye başvurmanın neden olduğu derleyici hatalarını görmek istiyorsanız, açıklamaları birer birer kaldırın.

public class T1
{
    public static int publicInt;
    internal static int internalInt;
    private static int privateInt = 0;

    static T1()
    {
        // T1 can access public or internal members
        // in a public or private (or internal) nested class.
        M1.publicInt = 1;
        M1.internalInt = 2;
        M2.publicInt = 3;
        M2.internalInt = 4;

        // Cannot access the private member privateInt
        // in either class:
        // M1.privateInt = 2; //CS0122
    }

    public class M1
    {
        public static int publicInt;
        internal static int internalInt;
        private static int privateInt = 0;
    }

    private class M2
    {
        public static int publicInt = 0;
        internal static int internalInt = 0;
        private static int privateInt = 0;
    }
}

class MainClass
{
    static void Main()
    {
        // Access is unlimited.
        T1.publicInt = 1;

        // Accessible only in current assembly.
        T1.internalInt = 2;

        // Error CS0122: inaccessible outside T1.
        // T1.privateInt = 3;

        // Access is unlimited.
        T1.M1.publicInt = 1;

        // Accessible only in current assembly.
        T1.M1.internalInt = 2;

        // Error CS0122: inaccessible outside M1.
        //    T1.M1.privateInt = 3;

        // Error CS0122: inaccessible outside T1.
        //    T1.M2.publicInt = 1;

        // Error CS0122: inaccessible outside T1.
        //    T1.M2.internalInt = 2;

        // Error CS0122: inaccessible outside M2.
        //    T1.M2.privateInt = 3;

        // Keep the console open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}

C# Dil Belirtimi

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.