INTERNAL |
Interne |
| C# (C Sharp) |
Syntaxe
|
internal typededonnees variable [ = valeur];
|
Paramètres
| Nom |
Description |
| typededonnees |
Ce paramètre permet d'indiquer le type de données. |
| variable |
Ce paramètre permet d'indiquer le nom de la variable rendre interne à la méthode. |
| valeur |
Ce paramètre permet d'indiquer la valeur à attribué à la variable. |
Description
Ce mot réservé permet d'accéder au modificateur de type d'un membre.
Remarques
- Le mot-clef internal définit une visibilité limitée à l'assembly courant : Cela signifie que tout membre marqué internal sera accessible
depuis n'importe quelle classe ou méthode dans le même fichier exécutable ou DLL, mais pas depuis un autre projet qui référencerait cette assembly. Il s'agit donc d'un
compromis entre public (accès partout) et private ou protected (accès très restreint).
- internal est souvent utilisé pour encapsuler la logique métier sans l'exposer au monde extérieur : Par exemple, dans une bibliothèque, on peut
garder certains services internes tout en exposant uniquement l'API publique. Cela permet de réduire les dépendances extérieures à des détails d'implémentation et de
favoriser un meilleur découplage.
- La portée de internal s'applique aussi bien aux classes qu'aux méthodes, propriétés ou champs : Une classe internal ne pourra pas être
instanciée en dehors de l'assembly, même si son constructeur est public. Cela renforce le contrôle sur l'architecture globale du projet et facilite la maintenance.
- L'utilisation du mot clef internal est très utile pour les tests unitaires avec les assemblies amis : Grâce à l'attribut
[InternalsVisibleTo("NomDuProjetDeTests")], il est possible de rendre visibles les membres internal à un projet de test spécifique, tout en maintenant leur
invisibilité pour les autres. Cela favorise les tests sans compromettre l'encapsulation.
- Il ne faut pas confondre internal avec private ou protected : Alors que private restreint l'accès au seul bloc où le membre
est défini, et protected permet l'accès depuis des classes dérivées, internal s'applique à tout élément du même assembly, quelle que soit la classe. Cela
peut parfois surprendre si l'on attend un cloisonnement plus strict.
- Le mot clef internal ne permet pas d'accéder à un membre depuis une autre solution : Même si on référence une DLL dans un autre projet, les membres
internal resteront invisibles, sauf si l'attribut [InternalsVisibleTo] est explicitement ajouté. C'est un moyen efficace pour préserver les frontières d'une
composante logiciel.
- Le mot clef internal peut coexister avec static, readonly ou même abstract selon le contexte : Par exemple, une méthode peut
être internal static, ou une propriété internal abstract dans une classe abstraite. Cela montre que internal n'est pas une contrainte de comportement
mais uniquement de visibilité.
- Certains développeurs utilisent internal pour améliorer les performances d'accès : Bien que la différence soit marginale dans la plupart des cas,
l'accès à un membre internal est un peu plus direct pour le JIT que s'il passait par des interfaces ou des API publiques. Cela peut jouer un rôle dans des
scénarios à haute performance.
Dernière mise à jour : Mardi, le 26 janvier 2016