441 votes

Modificateurs d'accès internes et privés

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

0 votes

558voto

explorer Points 3352

interne est pour la portée de l'assemblage (c'est-à-dire uniquement accessible à partir du code dans le même .exe ou .dll)

privé est pour la portée de la classe (c'est-à-dire accessible uniquement depuis le code de la même classe).

8 votes

J'ai une petite question ; si je déclare une classe comme privée dans un espace de nom à l'intérieur d'une assembly alors que la classe est interne, je peux accéder à cette classe à l'intérieur de l'assembly dans les deux cas, alors quelle est la différence entre une classe privée et une classe interne ? ou est-ce que private et internal sont des modificateurs en termes de classes utilisés lors de l'imbrication de classes dans des classes ?

2 votes

J'ai ajouté le projet/assemblage spécifique en tant que référence d'un autre projet et aussi bien private que internal m'empêchent d'accéder à cette classe particulière dans l'espace de nom, alors encore une fois... la différence entre les classes privées et internes est ? merci.

11 votes

Vous ne pouvez pas déclarer une classe de niveau supérieur comme privée. Le compilateur vous arrêtera.

226voto

Vivek Points 641

Vous trouverez 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 qu'au sein de leur propre type (classe propre).

Interne : - Les membres internes ne sont accessibles que dans l'assemblage par héritage (son type dérivé) ou par instance de classe.

enter image description here

Référence :

dotnetbull - Qu'est-ce qu'un modificateur d'accès en c# ?

20 votes

Intéressant que Protected Internal offre un accès plus large que Protected .

10 votes

@Dan, tout à fait d'accord. Il pourrait être utile de lire et de réfléchir à protected internal comme protected OR internal .

7 votes

Qu'est-ce que With Type C'est-à-dire ?

75voto

SLaks Points 391154

internal sont visibles par tout le code de l'assemblage dans lequel ils sont déclarés.
(Et à d'autres assemblages référencés à l'aide de la balise [InternalsVisibleTo] attribut )

private ne sont visibles que par la classe qui les déclare. (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'objet contenant pour le rendre privé.

Pour répondre à la question que vous avez oublié de poser, protected les membres sont comme 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 courante)

8voto

Arkain Points 4357

Privé ne sont accessibles que dans le corps de la classe ou de la structure dans laquelle ils sont déclarés.

Interne les types ou les membres ne sont accessibles qu'à l'intérieur des fichiers de la même assemblée.

0 votes

Alors quelle est la différence en utilisant ceci ? Je ne comprends toujours pas :X

5 votes

Private est accessible uniquement à partir de la classe, Internal est accessible à partir de l'assemblage (projet dans VS, c'est-à-dire le fichier dll/exe).

3voto

Nathan Teague Points 11

L'interne vous permettra de faire référence, par exemple, à une classe statique d'accès aux données (pour la sécurité des threads) entre plusieurs classes de logique métier, tout en évitant qu'elles n'héritent de cette classe ou ne se chevauchent dans les pools de connexion, et en évitant finalement de permettre à une classe DAL de promouvoir l'accès au niveau public. Cette démarche s'appuie sur d'innombrables éléments de conception et de bonnes pratiques.

Entity Framework fait un bon usage de ce type d'accès

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X