Frage

Hier ist ein VB.NET-Code-Snippet

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

Ich dachte, wir können nicht die privaten Mitglieder Zugriff auf das Objekt verwenden, aber vielleicht CLR ermöglicht es uns, das zu tun. So bedeutet das, dass Zugriffsmodifikatoren von der Art basieren und nicht auf der Instanz dieses Typs. Ich habe auch gehört, dass c ++ ermöglicht es auch, dass ..

Jede Vermutungen, was der Grund dafür sein könnte?

Edit:

Ich denke, diese Zeile aus dem Link Msdn gegeben durch RoBorg dieses Verhalten erklärt „Code in der Art, die ein eigenes Element erklärt, darin enthaltenen Typen, einschließlich Code, kann das Element zugreifen“

War es hilfreich?

Lösung

Ihre Frage ist ziemlich verwirrend, aber ich glaube, ich habe verstanden es als: „Warum kann ich auf eine andere Instanz (meiner Klasse) 's private Variablen?“

Und du hast Recht - in allen OOP Sprachen, die ich verwendet habe, Sie private Variablen von anderen Instanzen zugreifen können, gerade weil die Zugriffsberechtigungen basieren auf dem der Code ist, anstatt auf dem Objektinstanz sie ‚gehört‘ <. / p>

Es könnte schwierig sein Kopierkonstruktoren oder Gleichheitsoperator anders zu implementieren.

Andere Tipps

Hier ist der Abschnitt über Zugriffsebene in MSDN .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top