Accéder à la variable membre privée de la classe à l'aide de son objet (instance)
-
19-08-2019 - |
Question
Voici un extrait de code VB.NET
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 pouvions pas accéder aux membres privés à l'aide de l'objet, mais CLR nous permet peut-être de le faire. 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 aussi entendu dire que c ++ permet aussi que ..
Vous vous demandez quelle pourrait en être la raison?
Modifier:
Je pense que cette ligne du lien msdn donné par RoBorg explique ce comportement "Le code dans le type qui déclare un élément privé, y compris le code dans les types contenus, peut accéder à l'élément"
La solution
Votre question est assez déroutante mais je pense l’avoir comprise comme suit: "Pourquoi puis-je accéder à une autre instance (des variables privées de ma classe)?"
Et vous avez raison: dans toutes les langues de POO que j'ai utilisées, vous pouvez accéder à des variables privées à partir d'autres instances, précisément parce que les autorisations d'accès sont basées sur l'emplacement du code plutôt que sur l'instance d'objet à laquelle il appartient.
Sinon, il pourrait être difficile d'implémenter des constructeurs de copie ou des opérateurs d'égalité.
Autres conseils
Voici la section sur les niveaux d'accès dans MSDN .