web-dev-qa-db-fra.com

Modificateurs d'accès internes et d'accès privés

Quelle est la différence entre les modificateurs d'accès internal et private en C #?

373
Jim Fell

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).

493
explorer

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.

enter image description here

Référence:

dotnetbull - quel est le modificateur d'accès en c #

197
Vivek

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)

67
SLaks

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.

6
Jesper Fyhr Knudsen

private - encapsulations dans class/scope/struct ect '.

interne - encapsulation dans des assemblys.

6
Yaniv Lugassy

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

3
Nathan Teague