Share via


Domaine d'accessibilité (Référence C#)

Mise à jour : novembre 2007

Le domaine d'accessibilité d'un membre indique dans quelles sections du programme un membre peut être référencé. Si le membre est imbriqué dans un autre type, son domaine d'accessibilité est déterminé à la fois par le niveau d'accessibilité du membre et par le domaine d'accessibilité du type conteneur immédiat.

Le domaine d'accessibilité d'un type de niveau supérieur correspond au moins au texte du programme du projet dans lequel il est déclaré. Autrement dit, le domaine inclut tous les fichiers sources de ce projet. Le domaine d'accessibilité d'un type imbriqué correspond au moins au texte du programme du type dans lequel il est déclaré. Autrement dit, le domaine est le corps du type, ce qui inclut tous les types imbriqués. Le domaine d'accessibilité d'un type imbriqué ne dépasse jamais celui du type conteneur. Ces concepts sont illustrés dans l'exemple ci-dessous.

Exemple

Cet exemple met en jeu un type de niveau supérieur, T1, et deux classes imbriquées, M1 et M2. Les classes contiennent des champs dotés d'accessibilités déclarées différentes. Dans la méthode Main, un commentaire suit chaque instruction pour indiquer le domaine d'accessibilité de chaque membre. Notez que les instructions qui tentent de référencer les membres inaccessibles ont été placées en commentaire. Si vous voulez examiner les erreurs de compilation causées par la référence à un membre inaccessible, supprimez une marque de commentaire à chaque fois.

namespace AccessibilityDomainNamespace
{
    public class T1
    {
        public static int publicInt;
        internal static int internalInt;
        private static int privateInt = 0; // CS0414

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

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

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

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

            // Error: inaccessible outside T1:
            //    T1.myPrivateInt = 3;  

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

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

            // Error: inaccessible outside M1:
            //    T1.M1.myPrivateInt = 3; 

            // Error: inaccessible outside T1:
            //    T1.M2.myPublicInt = 1;

            // Error: inaccessible outside T1:
            //    T1.M2.myInternalInt = 2;

            // Error: inaccessible outside M2:
            //    T1.M2.myPrivateInt = 3;
        }
    }
}

Spécification du langage C#

Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.

  • 3.5.1 Accessibilité déclarée

  • 3.5.2 Domaines d'accessibilité

  • 3.5.4 Contraintes d'accessibilité

  • 10.3.5 Modificateurs d'accès

  • 10.3.8.2 Accessibilité déclarée

Voir aussi

Concepts

Guide de programmation C#

Référence

Mots clés C#

Modificateurs d'accès (Référence C#)

Niveaux d'accessibilité (Référence C#)

Limitations sur l'utilisation des niveaux d'accessibilité (Référence C#)

Modificateurs d'accès (Guide de programmation C#)

public (Référence C#)

private (Référence C#)

protected (Référence C#)

internal (Référence C#)

Autres ressources

Référence C#