Réponses:
interne est pour la portée de l'assembly (c'est-à-dire accessible uniquement à partir du code dans le même .exe ou .dll)
private est pour la portée de la classe (c'est-à-dire accessible uniquement à partir du code de la même classe).
Trouvez une explication ci-dessous. Vous pouvez consulter ce lien pour plus de détails - http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
Privé: - Les membres privés ne sont accessibles que dans le propre type (classe propre).
Interne: - Les membres internes sont accessibles uniquement au sein de l'assembly par héritage (son type dérivé) ou par instance de classe.
Référence :
Protected Internal
offre un accès plus large que Protected
.
protected internal
à protected OR internal
.
With Type
dire?
AND
que la matrice pour true | false | false | false pour protected internal
. pas intuitif. à la place, c'est vrai | vrai | vrai | faux comme si OR'd
.
private protected
ne soient pas très intuitifs. Pour plus de détails: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
internal
les membres sont visibles pour tout le code de l'assembly dans lequel ils sont déclarés.
(Et pour les autres assemblys référencés à l'aide de l' [InternalsVisibleTo]
attribut )
private
les membres ne sont visibles que par la classe déclarante. (y compris les classes imbriquées)
Une classe externe (non imbriquée) ne peut pas être déclarée private
, car il n'y a pas d'étendue contenant pour la rendre privée.
Pour répondre à la question que vous avez oublié de poser, les protected
membres sont comme des private
membres, mais sont également visibles dans toutes les classes qui héritent du type déclarant. (Mais uniquement sur une expression d'au moins le type de la classe actuelle)
private - encapsulations dans class / scope / struct ect '.
interne - encapsulation dans les assemblages.
Les membres privés ne sont accessibles que dans le corps de la classe ou la structure dans laquelle ils sont déclarés.
Les types ou membres internes sont accessibles uniquement dans les fichiers du même assembly
Interne vous permettra de référencer, par exemple, une classe statique d'accès aux données (pour la sécurité des threads) entre plusieurs classes de logique métier, sans les abonner pour hériter de cette classe / du voyage les unes sur les autres dans les pools de connexions, et pour éviter au final d'autoriser une classe DAL promouvoir l'accès au niveau public. Cela a d'innombrables soutiens dans la conception et les meilleures pratiques.
Entity Framework fait bon usage de ce type d'accès
les membres internes sont accessibles au sein de l'assembly (uniquement accessible dans le même projet)
les membres privés sont accessibles dans la même classe
Il y a 2 projets dans une solution (Project1, Project2) et Project1 a une référence à Project2.