public/internal/protected/private (remarque sur file)
Découvrez comment public, internal, protected et private modifient la visibilité ; voyez les règles d’héritage et de même assembly. Remarque : l’accès limité au fichier n’existe pas en C# 6.
public/internal/protected/private (remarque sur file) est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.
Vue d’ensemble des modificateurs d’accès
Objectif : choisir la visibilité appropriée.
- public : partout
- internal : dans le même assembly
- protected : dans les classes dérivées
- private : dans la même classe
- fichier : plus récent que C# 6 (à titre informatif)
private ou public
Gardez les champs private et exposez des membres public dont les valeurs sont validées.
using System;
// private: only inside the class; public: everywhere the class is visible
public class Box
{
private int _width; // hidden storage
public int Width // controlled access
{
get { return _width; }
set { _width = value < 0 ? 0 : value; } // simple guard
}
}
public class Program
{
public static void Main(string[] args)
{
Box b = new Box();
// b._width = -5; // INVALID: private (kept as comment)
b.Width = 10; // OK: public property
Console.WriteLine("Width = " + b.Width);
}
}
protected dans l’héritage
protected sert à l’héritage : les types dérivés peuvent l’utiliser, mais pas les éléments extérieurs.
using System;
public class BaseCounter
{
protected int Count; // derived classes can see this
public int Value() { return Count; }
}
public class StepCounter : BaseCounter
{
public void Step() { Count = Count + 1; } // allowed: protected
}
public class Program
{
public static void Main(string[] args)
{
StepCounter sc = new StepCounter();
sc.Step();
// sc.Count = 5; // INVALID from outside (commented)
Console.WriteLine("Value = " + sc.Value());
}
}
Accès internal
internal limite la visibilité à l’assembly actuel (bibliothèque ou application compilée).
using System;
// internal type: visible only inside this assembly
internal class InternalHelper
{
public static string Ping() { return "pong"; }
}
// public type can use internal from the same assembly
public class UsesInternal
{
public string Call() { return InternalHelper.Ping(); }
}
public class Program
{
public static void Main(string[] args)
{
UsesInternal u = new UsesInternal();
Console.WriteLine(u.Call());
}
}
protected internal
protected internal signifie que l’élément est accessible aux types dérivés ou depuis n’importe quel endroit du même assembly.
using System;
public class LibraryBase
{
// Accessible to derived types OR anywhere in the same assembly
protected internal void Touch() { Console.WriteLine("touched"); }
}
public class LibChild : LibraryBase
{
public void Use() { Touch(); } // via inheritance
}
public class Program
{
public static void Main(string[] args)
{
LibChild c = new LibChild();
c.Use();
LibraryBase b = new LibraryBase();
b.Touch(); // same assembly, allowed
}
}
Remarque et conseils sur le modificateur file
Remarque : le modificateur d’accès fichier est apparu dans une version plus récente de C# (il n’existe pas dans C# 6). En C# 6, limitez-vous à public, internal, protected, private et protected internal.
- Privilégiez private par défaut.
- Utilisez public uniquement pour la surface de l’API.
- Utilisez internal pour masquer l’implémentation aux autres assemblys.
- Utilisez protected pour la coopération entre la classe de base et les classes dérivées.
Signification de internal
Récapitulatif
Récapitulatif : choisissez la visibilité minimale nécessaire : private → protected/internal → public. C# 6 n’inclut pas le nouveau modificateur fichier ; utilisez internal pour masquer les éléments au niveau de l’assembly.
Apprends C# avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 93
- Leçons
- 346
Questions Fréquemment Posées
La leçon « public/internal/protected/private (remarque sur file) » est-elle gratuite ?
Oui — le texte complet de « public/internal/protected/private (remarque sur file) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « public/internal/protected/private (remarque sur file) » ?
Découvrez comment public, internal, protected et private modifient la visibilité ; voyez les règles d’héritage et de même assembly. Remarque : l’accès limité au fichier n’existe pas en C# 6. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 3.
Combien de temps prend la leçon « public/internal/protected/private (remarque sur file) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- public/internal/protected/private (remarque sur file)
- Espaces de noms, directives using et imports globaux (remarque)
- Types partiels et fichiers