Niveaux d’accessibilité (référence C#)

Utilisez les modificateurs d’accès public, protected, internal ou private pour spécifier l’un des niveaux d’accessibilité déclarés ci-dessous pour les membres.

Accessibilité déclarée Signification
public L’accès n’est pas limité.
protected L’accès est limité à la classe conteneur ou aux types dérivés de la classe conteneur.
internal L’accès est limité à l’assembly actuel.
protected internal L’accès est limité à l’assembly actuel ou aux types dérivés de la classe conteneur.
private L’accès est limité au type conteneur.
private protected L’accès est limité à la classe conteneur ou aux types dérivés de la classe conteneur dans l’assembly actuel. Disponible depuis C# 7.2.

Vous ne pouvez spécifier qu’un seul modificateur d’accès pour un membre ou un type, sauf si vous utilisez les combinaisons protected internal ou private protected.

Les modificateurs d’accès ne sont pas autorisés sur les espaces de noms. Les espaces de noms ne présentent aucune limitation d’accès.

Selon le contexte dans lequel une déclaration de membre est effectuée, seules certaines accessibilités déclarées sont autorisées. Si aucun modificateur d’accès n’est spécifié dans une déclaration de membre, une accessibilité par défaut est utilisée.

Les types de premier niveau, qui ne sont pas imbriqués dans d’autres types, peuvent uniquement avoir une accessibilité internal ou public. L’accessibilité par défaut de ces types est internal.

Les types imbriqués, qui sont membres d’autres types, peuvent avoir les accessibilités déclarées indiquées dans le tableau suivant.

Membres de Accessibilité par défaut du membre Accessibilité déclarée du membre autorisée
enum public None
class private public

protected

internal

private

protected internal

private protected
interface public public

protected

internal

private*

protected internal

private protected
struct private public

internal

private

* Un interface membre avec l' private accessibilité doit avoir une implémentation par défaut.

L’accessibilité d’un type imbriqué dépend de son domaine d’accessibilité, qui est déterminé à la fois par l’accessibilité déclarée du membre et par le domaine d’accessibilité du type conteneur immédiat. Toutefois, le domaine d'accessibilité d'un type imbriqué ne peut pas dépasser celui du type conteneur.

Spécification du langage C#

Pour plus d'informations, voir la spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.

Voir aussi