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
Référence
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#)