Megosztás a következőn keresztül:


Akadálymentességi tartomány (C#-referencia)

A tagok akadálymentességi tartománya határozza meg, hogy mely programszakaszokban lehet egy tagra hivatkozni. Ha a tag egy másik típusba van ágyazva, az akadálymentességi tartományt a tag kisegítő szintje és az azonnal tartalmazó típus akadálymentességi tartománya határozza meg.

A legfelső szintű típus akadálymentességi tartománya legalább annak a projektnek a programszövege, amelyben deklarálva van. Vagyis a tartomány tartalmazza a projekt összes forrásfájlját. A beágyazott típus akadálymentességi tartománya legalább annak a típusnak a programszövege, amelyben deklarálva van. Vagyis a tartomány a típus törzse, amely tartalmazza az összes beágyazott típust. A beágyazott típus akadálymentességi tartománya soha nem haladja meg a tartalomtípus akadálymentességi tartományát. Ezeket a fogalmakat az alábbi példában mutatjuk be.

Példa

Ez a példa egy legfelső szintű típust, T1valamint két beágyazott osztályt M1 és M2. Az osztályok különböző deklarált hozzáférési képességekkel rendelkező mezőket tartalmaznak. A metódusban egy Main megjegyzés követi az egyes utasításokat az egyes tagok akadálymentességi tartományának jelzéséhez. Figyelje meg, hogy a nem elérhető tagokra hivatkozni próbáló állítások megjegyzésben jelennek meg. Ha egy elérhetetlen tagra való hivatkozás által okozott fordítóhibákat szeretné látni, távolítsa el egyenként a megjegyzéseket.

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# nyelvi specifikáció

További információkért lásd a C# nyelvi specifikációját. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.

Lásd még