Modificateur d'accès (Access Modifier) en C#

View more categories:

1- Modificateur dans CSharp

Les access modifiers dans CSharp précise l'accessibilité (Champ) d'une données de membre, de méthode, de constructeur (constructor) ou de classe.

Il y a 5 types de  access modifiers dans  CSharp:
  1. private
  2. protected
  3. internal
  4. protected internal
  5. public

2- Vue d'ensemble de access modifier

Modificateur
(Modifier)
Description
private L'accès est limité à la définition de classe. C'est le type de modificateur d'accès par défaut si aucun n'est formellement spécifié
protected L'accès est limité à la définition de classe et à toute classe qui hérite de la classe.
internal L'accès est limité exclusivement aux classes définies dans l'assemblage du projet actuel.
protected internal L'accès est limité à l'assemblage actuel et aux types dérivés de la classe contenant. Tous les membres dans le projet actuel et tous les membres dans une classe dérivée peuvent accéder aux variables. 
public Il n'y a aucune restriction quant à l'accès aux membres publics (public).
Le tableau ci- dessous vous donne une vue d'ensemble de comment utiliser des  access modifier.

Même Assembly  Assembly Différent
Accèss en classe Accèss en package Accèss à l'extérieur de parkage par sous-classe uniquement Dans la sous classe Hors de la sous classe
private Y



protected Y Y
Y
internal Y Y Y

protected internal Y Y Y

public Y Y Y Y Y
Vous pouvez voir plus en détails dans l'exemple ci-dessous:

3- private access modifier

private access modifier est accessible seulement dans la classe.
Vous ne pouvez acccéder au membre  private en dehors de la classe qui définit ce membre-là. CSharp sẽ notifiera l'erreur à l'heure de compilation de la classe.

4- private constructor

Le constructeur (constructor), la méthode (method), le champ (field) sont reconnus comme les membres de la classe.
Si vous créez une classe et avoir un constructeur (constructor) dont le  access modifier est  private, vous ne pouvez pas créer un objet de cette classe de ce ledit  private constructor en dehors de cette classe. Voyons un exemple d'illustration:

5- protected access modifier

protected access modifier peut accéder à l'intérieur du  package, ou en dehors du  package dans le cas où il hérite de cette classe.


protected access modifier peut être appliqué sur des données de  field, method et  constructor. Il ne peut pas être appliqué sur la class (class, interface, ..).

6- internal access modifier

internal est un modificateur d'accès, il n'est limité exclusivement d'accéder aux classes qui sont définies dans le projet courant Assembly.

Un Assembly est le résultat de compilation de votre code, généralement est un DLL, mais EXE est également considéré comme un assembly. Il est la plus petite unitéde déploiement pour tout projet .NET.

Assembly comprend généralement le code .NET dans MSIL (Microsoft Intermediate language - Langage intermédiaire) qui sera compilé au code indigène (Native code) ("JITted" - compilé par le compilateur Just-In-Time) pour la première fois, il est exécuté sur une machine donnée. Ce code compilé là sera aussi stocké dans Assembly et réutilisé pour des appels suivant.

7- protected internal access modifier

Le modificateur d'accès  protected internal est une combinaison entre deux modificateur  protected et  internal, lorsqu' un membre de la classe possède ce modificateur d'accès, vous pouvez seulement accéder au ce membre dans la classe qui le définit ou dans des sous classes et il est compris dans un  Assembly.

8- public access modifier

public access modifier est accessible n'import quel lieu. Il a la portée la plus étendue parmi tous les autres modifier.

9- Le modificateur d'accès et l'héritage

Dans  CSharp vous pouvez remplacer (override) une méthode (method) de la superclasse par la méthode de même nom et de mêmes paramètres, renvoie le type dans la sous-classe, mais vous n'êtes pas autorisé de changer son modificateur d'accès (access modifier).
Cependant, vous pouvez créer une méthode avec le même nom, les même paramètres, renvoie le typem mais de différents niveaux d'accessibilité lorsque vous utilisez le nouveau mot de pass. En effet, le fait est qu'une méthode différente est sans rapport avec la méthode de la classe mère.
La différence entre  override et  new ont été expliquées dans le document  "L'héritage et le polymorphisme dans CSharp" vous pouvez le voir à:

View more categories: