2008-12-06 6 views
1

Voici un extrait de code VB.NETAccès membre privé de la classe par son objet (par exemple)

Public Class OOPDemo 

    Private _strtString as String 

    Public Function Func(obj as OOPDemo) as boolean 
     obj._strString = "I can set value to private member using a object" 

    End Function 

End Class 

Je pensais que nous ne pouvons pas accéder aux membres privés en utilisant l'objet, mais peut-être CLR nous permet de faire cette. Cela signifie donc que les modificateurs d'accès sont basés sur le type et non sur l'instance de ce type. J'ai également entendu que C++ permet également que ..

Tout devine quelle pourrait être la raison de cela?

Edit:

Je pense que cette ligne à partir du lien msdn donnée par RoBorg explique ce comportement « Code dans le type qui déclare un élément privé, y compris le code dans les contenus types, peuvent accéder à l'élément »

Répondre

3

Votre question est assez confuse mais je pense que je l'ai comprise comme: "Pourquoi puis-je accéder à une autre instance (de ma classe) des variables privées?" Et vous avez raison - dans tous les langages POO que j'ai utilisés, vous pouvez accéder à des variables privées d'autres instances, précisément parce que les autorisations d'accès sont basées sur l'endroit où le code est, plutôt que sur l'instance d'objet.

Il peut être difficile d'implémenter des constructeurs de copie ou des opérateurs d'égalité dans le cas contraire.

+0

Je viens juste de me lancer dans la première fois quand l'auto-complétion m'a donné l'opportunité d'accéder à la méthode privée de l'autre instance. Je prends votre point de vue sur les constructeurs de copie, mais il me semble encore mal du point de vue de l'encapsulation. – ChrisA