Question

A cette question SO: Quel est le C # équivalent d'ami , personnellement, j'aurais répondu « interne », tout comme Ja a fait parmi les réponses! Cependant, Jon Skeet dit qu'il n'y a pas d'équivalence directe de VB ami en C #. Si Jon Skeet dit, je ne serai pas celui dire autrement! ; P

Je me demande comment le mot-clé interne (C # ) ne pas être l'équivalent de ami (VBNET) lorsque leurs définitions respectives sont:

ami VBNET

  

L'ami (Visual Basic) mot-clé dans la déclaration de déclaration spécifie que les éléments sont accessibles à partir du même ensemble, mais pas à l'extérieur de l'ensemble. [...]

interne C #

  

interne :. L'accès est limité à l'assemblée actuelle

À ma connaissance, ces définitions signifient tout à fait la même chose pour moi.

Alors, respectivement, quand je codage en VB.NET, j'utilise le mot-clé Friend pour spécifier qu'une classe ou une propriété doivent être accessibles que dans l'assemblée où elle est déclarée. La même chose en C #, j'utiliser le interne mot-clé pour spécifier le même.

  1. Suis-je faire quelque chose ou quelque chose de mal dans cette perspective?

  2. Quelles sont les améliorations que je ne comprends pas?

  3. peut quelqu'un s'il vous plaît expliquer comment ou dans quel ami et interne ne sont pas directement équivalences?

Merci d'avance pour toutes vos réponses!

Était-ce utile?

La solution

Je l'ai dit il n'y a pas d'équivalent direct du concept C ++ "ami". Ce n'est pas le même que le concept de Friend VB.NET, qui est en effet équivalent à internal en C #.

Le contexte est important - ne présumez pas que les mêmes moyens de mot exactement la même chose dans toutes les langues ... « statique » est un exemple classique:)

Autres conseils

réponse de Jon (original), il est clair qu'il fait référence à la C / C ++ mot-clé friend, qui accorde un accès privé à une autre classe. Il n'y a pas d'équivalent en C #, mais il y a un moyen d'étendre internal à un autre ensemble, en grande partie pour les tests.

Pour autant que je le comprends, VB.Net Friend est le même que C # internal.

(je l'ai écrit ci-dessus comme Jon a ajouté une réponse ici.)

Lorsque l'on compare les langages .NET, le friend de VB équivaut à la internal de C #. Signification, quoi que ce soit marqué en tant que tel ne peut être accessible à partir du même projet / assemblage. Il peut être combiné avec protected pour un meilleur contrôle sur la visibilité.

L'attribut InternalsVisibleTo peut être utile pour des fins d'analyse; malgré son nom, il applique à VB autant qu'il fait à C #. Il convient de noter que VB ne prend pas en charge l'utilisation de InternalsVisibleTo jusqu'à ce que .NET 4.

Il y a un équivalent approximatif du C ++ mot-clé ami en code managé. Bien que cela fonctionne au niveau de l'assemblage, et non le niveau de la classe. Vous pouvez utiliser le [InternalsVisibleTo] attribut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top