Quelle est la différence entre les modificateurs d'accès internal
et private
en C #?
interne est destiné à la portée de l’Assemblée (c’est-à-dire accessible uniquement à partir du code du même fichier .exe ou .dll)
private est pour l'étendue 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
Private: - Les membres privés ne sont accessibles que dans leur propre type (Propre classe).
Internal: - Les membres internes ne sont accessibles que dans l'Assemblée par héritage (son type dérivé) ou par instance de classe.
Référence:
Les membres internal
sont visibles par tout le code de l'assembly dans lequel ils sont déclarés.
(Et aux autres assemblys référencés à l'aide de [InternalsVisibleTo]
attribut )
Les membres private
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 de portée contenant pour la rendre privée.
Pour répondre à la question que vous avez oublié de poser, les membres protected
sont comme les membres private
, mais sont également visibles dans toutes les classes qui héritent du type déclarant. (Mais seulement sur une expression d'au moins le type de la classe en cours)
Les membres privés ne sont accessibles que dans le corps de la classe ou de la structure dans laquelle ils sont déclarés.
Les types ou membres internes sont accessibles uniquement dans les fichiers du même assemblage.
private - encapsulations dans class/scope/struct ect '.
interne - encapsulation dans des assemblys.
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/de ce voyage les uns sur les autres dans des pools de connexions, et d'éviter finalement d'autoriser une classe DAL. promouvoir l'accès au niveau public. Cela a des fondements innombrables dans la conception et les meilleures pratiques.
Entity Framework utilise bien ce type d'accès