Quelle est la différence entre "privé" et "protégé interne"?
Je veux juste savoir quelle est la réelle différence entre privé et protégées interne spécificateur d'accès. Comme je sais
Visible par les propres membres de la classe: privé et protégé interne OUI
Visible pour objet de d'autres classes: les Deux PAS
Visible à des objets d'autres classes à l'extérieur de l'espace de noms de la collection: les Deux PAS
Visible à l'objet de l'enfant en cours à l'extérieur de l'espace de noms de la collection: les Deux PAS
Si privé faire la même chose que interne protégée alors pourquoi nous avons besoin à la fois juste, on devrait être assez ou pas assez?
source d'informationauteur avirk | 2012-06-09
Vous devez vous connecter pour publier un commentaire.
protected internal
membre est visible à tout le code dans l'actuelle assemblée ou dans une classe dérivée d'une autre assemblée. En termes techniques, c'est la disjonction logique deprotected
etinternal
.private
membre est visible uniquement code dans la même classe.protected internal
est en fait le deuxième plus permissif modificateur d'accès aprèspublic
.Il est intéressant de noter que
protected
est sans doute plus permissive queinternal
car il permet l'accès à partir du code que vous n'avez aucun contrôle sur (c'est à dire d'autres assemblées). Alors queinternal
permet l'accès à partir tous du code dans l'assemblée, ce code est le vôtre et que vous avez le contrôle!Pour paraphraser,
protected
(etprotected internal
) les membres font partie de l'API publique de votre assemblée (et doit donc être documentée).internal
membres ne le sont pas.Une vue d'ensemble graphique (résumé en un mot)
private
est seulement visible par les propres membres de la classe, alors queprotected internal
est visible à l'enfant des classes ainsi que à d'autres classes à l'intérieur de l'espace de noms de la collection.privé
interne protégée
Je pense que les protégés interne signifie que seules les classes qui en héritent et sont dans la même assemblée peut voir que la propriété. Ceux qui dérivent de la classe et de différents assemblée, ne peut pas la voir.
LE: lire Mattias Buelens commentaire pour cette.
Parlant pratiquement, en général, je utilisez uniquement privé pour les variables pour s'assurer qu'ils ne peuvent pas être utilisés à mauvais escient par les autres classes.
Interne protégée, cependant, je vais souvent utiliser des méthodes que je ne veux pas que la plupart des autres classes pour pouvoir l'utiliser, mais que je veux être en mesure d'accéder à écrire des cas de test. Il est très utile en ce qu'elle permet à des classes de test pour être créé dans la sane espace de noms ou de structure de paquet qui peut ensuite accéder à ces protégés méthodes internes sans façon inappropriée d'ouverture au reste du monde.
Cette approche exige une approche de codage où l'écriture facilement "testable" code est une priorité. Si ce n'était pas mon approche, je ne suis pas sûr que j'aurais trouver de nombreuses reprises pour utilisation interne protégée.
J'essayais de comprendre les différences entre les protégés interne et interne .NET contexte par la lecture de la description fournie différents forums et blogs. J'ai vraiment pas compris alors j'ai créé a créé 2 assemblée distincte à l'aide de VS2015. Probablement maintenant, j'ai une compréhension de base. Je voudrais partager avec vous, il pourrait être utile à quelqu'un. J'ai essayé d'utiliser les champs déclarés dans une assemblée à partir d'une autre assemblée. Aussi j'ai essayé dérivée d'une classe qui a été déclarée dans une autre assemblée.
Voici le code pour class1.cs de l'assemblée 1
Voici le code à partir d'une autre assemblée, class2.cs
à l'aide de Z_Dll_1;