8. Modificateurs d'accès

Pour favoriser l'encapsulation, un type ou un type membre peut se cacher lui-même des autres types ou des autres assemblées en ajoutant l'un des 5 modificateurs suivants à sa déclaration : Notez qu'un type membre peut être un type imbriqué.

8.1. Restrictions sur les modificateurs d'accès

Un type ou un type membre ne peut pas être déclaré pour être plus accessible que les types qu'il utilise dans la déclaration. Par exemple, une classe ne peut pas être déclarée public si elle dérive d'une classe internal, ou une méthode ne peut pas être protected si le type de l'un de ses paramètres est interne à l'assemblée.
De plus, les modificateurs d'accès ne peuvent pas être utilisés lorsqu'ils entrent en conflit avec la finalité des modificateurs hérités. Par exemple, un membre virtuel (virtual) ou abstrait (abstract) ne peut pas être déclaré private, puisqu'il serait impossible de le surcharger. De même, une classe scellée (sealed) ne peut pas définir de nouveaux membres protected, du fait qu'il n'y a pas de classe qui pourrait profiter de cette accessiblité.
Finalement, pour préserver le contrat d'une classe de base, une fonction membre avec le modificateur override doit avoir la même accessibilité que le membre virtuel qu'elle surcharge.