Sdílet prostřednictvím


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

Usnadnění domény člena určuje, v které části programu lze odkazovat člen.Jestliže člen je vnořen do jiného typu, jeho usnadnění domény určen i úroveň usnadnění člena a usnadnění domény okamžitě obsahující typu.

Usnadnění domény nejvyšší úrovně typu je alespoň projektu, který je deklarován v textu programu.Domény, zahrnuje všechny zdrojové soubory projektu.Usnadnění domény vnořeného typu je alespoň text program typu, který je deklarován.Doména je typ subjektu, který zahrnuje všechny vnořené typy.Usnadnění domény vnořeného typu nikdy přesahuje obsahující typu.Tyto pojmy se prokáže, že v následujícím příkladu.

Příklad

V tomto příkladu obsahuje nejvyšší úrovně typu T1a dvě vnořené třídy M1 a M2.Třídy obsahují pole, které mají různé prohlášených accessibilities.V Main metoda, následuje komentář každý příkaz označíte usnadnění domény každého člena.Všimněte si nepracovala příkazy, které odkazují na členy nepřístupné.Pokud chcete zobrazit chyby kompilátoru způsobené odkazování na nepřístupné členské, odeberte komentáře jeden najednou.

namespace AccessibilityDomainNamespace
{
    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 v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také

Referenční dokumentace

Klíčová slova jazyka C#

Modifikátory přístupu (Referenční dokumentace jazyka C#)

Úrovně přístupnosti (Referenční dokumentace jazyka C#)

Omezení používání úrovní přístupu (Referenční dokumentace jazyka C#)

Modifikátory přístupu (Průvodce programováním v C#)

public (Referenční dokumentace jazyka C#)

private (Referenční dokumentace jazyka C#)

protected (Referenční dokumentace jazyka C#)

internal (Referenční dokumentace jazyka C#)

Koncepty

Průvodce programováním v C#

Další zdroje

Referenční dokumentace jazyka C#