Delen via


Naslaginformatie over toegankelijkheidsdomein (C#)

Het toegankelijkheidsdomein van een lid geeft de programmasecties op waar u naar dat lid kunt verwijzen. Als het lid is genest binnen een ander type, bepalen zowel het toegankelijkheidsniveau van het lid als het toegankelijkheidsdomein van het onmiddellijk met het betreffende type het toegankelijkheidsdomein.

De C#-taalreferentiedocumenten beschrijven de meest recent uitgebrachte versie van de C#-taal. Het bevat ook de eerste documentatie voor functies in openbare previews voor de aanstaande taalrelease.

De documentatie identificeert alle functies die voor het eerst zijn geïntroduceerd in de laatste drie versies van de taal of in de huidige openbare previews.

Aanbeveling

Raadpleeg het artikel over de versiegeschiedenis van de C#-taal om te achterhalen wanneer een functie voor het eerst is geïntroduceerd in C#.

Het toegankelijkheidsdomein van een type op het hoogste niveau bevat altijd ten minste de programmatekst van het project waarin u het declareert. Met andere woorden, het domein bevat alle bronbestanden in het project. Het toegankelijkheidsdomein van een genest type bevat altijd ten minste de programmatekst van het type waar u het declareert. Met andere woorden, het domein is de hoofdtekst van het type, die alle geneste typen bevat. Het toegankelijkheidsdomein van een genest type overschrijdt nooit het domein van het betreffende type. In het volgende voorbeeld ziet u deze concepten.

Dit voorbeeld bevat een type op het hoogste niveau, T1en twee geneste klassen, M1 en M2. De klassen bevatten velden met verschillende gedeclareerde toegankelijkheidsproblemen. In de Main methode volgt een opmerking elke instructie om het toegankelijkheidsdomein van elk lid aan te geven. De instructies die proberen te verwijzen naar de niet-toegankelijke leden, worden als commentaar weergegeven. Als u de compilerfouten wilt zien die worden veroorzaakt door te verwijzen naar een niet-toegankelijk lid, verwijdert u de opmerkingen één voor éé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#-taalspecificatie

Zie de C#-taalspecificatie voor meer informatie. De taalspecificatie is de definitieve bron voor de C#-syntaxis en het gebruik.

Zie ook