Comprendre les Modificateurs d'Accès C# (Spécificateurs) avec Exemples Pratiques
Que sont les Modificateurs d'Accès en C# ?
Les modificateurs d'accès — mots-clés qui contrôlent la visibilité des types et des membres de types — sont une pierre angulaire de l'encapsulation en C#. Ils déterminent quel code peut référencer une classe, une propriété ou une méthode, garantissant que seules les parties prévues d'un programme peuvent interagir avec les détails d'implémentation internes.
Il existe six modificateurs d'accès disponibles en C# :
- Private
- Public
- Protected
- Internal
- Protected Internal
- Private Protected
Dans ce tutoriel, vous apprendrez :
- Ce que sont les modificateurs d'accès et pourquoi ils sont importants
- Les modificateurs Private, Public, Protected et Internal en profondeur
- Comment les constructeurs initialisent les champs de classe
Modificateur d'Accès Private
Marquer un membre comme private restreint son utilisation à la classe conteneur uniquement. Le code externe — y compris d'autres classes dans le même assembly — ne peut pas référencer un membre private.
Exemple de Modificateur Private
Modifions SetTutorial dans Tutoriel.cs pour illustrer cette règle. Changez le mot-clé public en private :

Maintenant, passez à Program.cs. Le compilateur soulignera l'appel à SetTutorial avec une ligne rouge ondulée, indiquant que la méthode est inaccessible depuis cet emplacement.

Modificateur d'Accès Public
Les membres publics sont visibles par tout code qui peut référencer le type conteneur. C'est le défaut pour les membres qui ne spécifient pas de modificateur d'accès.
Exemple de Modificateur Public

Puisque SetTutorial est déclaré public, il peut être appelé depuis Program.cs sans aucune erreur de compilation.
Modificateur d'Accès Protected
Un membre protected est accessible uniquement dans sa propre classe et les classes dérivées. Ce niveau d'accès est idéal pour créer des classes de base réutilisables tout en protégeant l'implémentation interne.
Modificateur d'Accès Internal
Les membres internal sont visibles par tout code dans le même assembly, mais pas par le code dans d'autres assemblies. Cela est utile pour les composants de bibliothèque qui ne devraient être exposés qu'aux consommateurs de la bibliothèque.
Constructeurs en C#
Les constructeurs initialisent une nouvelle instance d'une classe. Ils portent le nom de la classe, n'ont pas de type de retour et sont invoqués automatiquement lorsque new est utilisé.
- L'accès par défaut pour un constructeur est
publicsauf spécification contraire. - Un constructeur ne peut pas déclarer de type de retour.
Exemple de Constructeur C#
Nous démontrerons un constructeur qui définit des valeurs par défaut pour TutorialID et TutorialName lors de la création d'un objet Tutoriel.
Étape 1) Ajoutez le constructeur à Tutoriel.cs :

Explication du Code
- La méthode nommée
Tutorielest traitée comme un constructeur. Elle s'exécute automatiquement lors de la création d'une instance. - Le constructeur assigne
0àTutorialIDet"Défaut"àTutorialName, assurant un état initial cohérent.
Dans Program.cs, supprimez l'appel à SetTutorial pour vous concentrer sur le comportement du constructeur :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication {
class Tutoriel {
public int TutorialID;
public string TutorialName;
public Tutoriel() {
TutorialID = 0;
TutorialName = "Défaut";
}
public void SetTutorial(int pID, string pName) {
TutorialID = pID;
TutorialName = pName;
}
public string GetTutorial() {
return TutorialName;
}
static void Main(string[] args) {
Tutoriel pTutor = new Tutoriel();
Console.WriteLine(pTutor.GetTutorial());
Console.ReadKey();
}
}
}
Explication du Code
- Une instance de
Tutorielest créée avec le mot-clénew. - La méthode
GetTutorialrécupère leTutorialNamepar défaut, qui est ensuite affiché viaConsole.WriteLine.
Lors de l'exécution, la console affiche :
Sortie :

La sortie confirme que le constructeur s'est exécuté et a initialisé TutorialName à "Défaut".
Note : La valeur "Défaut" provient du constructeur, pas du code externe.
Résumé
- Les modificateurs d'accès définissent la visibilité des membres de classe.
privatecache les membres de tout code externe.publicexpose les membres à tout code référençant.protectedrestreint les membres à la classe et ses descendants.internallimite la visibilité à l'assembly courant.- Les constructeurs initialisent les champs lors de l'instanciation d'un objet.
Langue C
- Boucle do-while en C++ : Syntaxe, exemples pratiques et boucles imbriquées
- Maîtriser les pointeurs en C++ : Concepts, exemples et applications pratiques
- Surcharge d'opérateurs en C++ : Guide pratique avec exemples de code
- Les Fonctions en C++ Expliquées avec des Exemples de Code Pratiques
- Maîtriser les Collections C# : Tutoriel Pratique avec Exemples Réels
- Maîtriser str.count() de Python : Compter caractères et sous-chaînes avec exemples
- Fonction Python round() expliquée avec exemples pratiques
- Maîtriser la fonction Python map() : syntaxe, exemples et bonnes pratiques
- Python timeit() : mesurer le temps d'exécution avec exemples pratiques