Sdílet prostřednictvím


Doména přístupnosti (referenční dokumentace jazyka C#)

Doména přístupnosti člena určuje oddíly programu, na které můžete odkazovat na daného člena. Pokud je člen vnořený do jiného typu, určí úroveň přístupnosti člena i doménu přístupnosti bezprostředně obsahujícího typu.

Referenční dokumentace jazyka C# dokumentuje naposledy vydané verze jazyka C#. Obsahuje také počáteční dokumentaci k funkcím ve verzi Public Preview pro nadcházející jazykovou verzi.

Dokumentace identifikuje všechny funkce, které byly poprvé představeny v posledních třech verzích jazyka nebo v aktuálních verzích Public Preview.

Návod

Informace o tom, kdy byla funkce poprvé představena v jazyce C#, najdete v článku o historii verzí jazyka C#.

Doména přístupnosti typu nejvyšší úrovně vždy obsahuje alespoň text programu projektu, ve kterém ho deklarujete. Jinými slovy, doména obsahuje všechny zdrojové soubory v projektu. Doména přístupnosti vnořeného typu vždy obsahuje alespoň text programu typu, ve kterém ho deklarujete. Jinými slovy, doména je text typu, který zahrnuje všechny vnořené typy. Doména přístupnosti vnořeného typu nikdy nepřekročí doménu obsahujícího typu. Následující příklad ukazuje tyto koncepty.

Tento příklad obsahuje typ nejvyšší úrovně a T1dvě vnořené třídy M1 a M2. Třídy obsahují pole s různou deklarovanou pravděpodobností přístupu. Main V metodě se komentář řídí každým příkazem, který označuje doménu přístupnosti každého člena. Příkazy, které se pokusí odkazovat na nepřístupné členy, jsou okomentovány. Pokud chcete zobrazit chyby kompilátoru způsobené odkazem na nepřístupný člen, odeberte komentáře po jednom.

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();
    }
}

Specifikace jazyka C#

Další informace najdete ve specifikaci jazyka C#. Specifikace jazyka je konečným zdrojem syntaxe a použití jazyka C#.

Viz také