2 Stimmen

Vb.Net Scoping-Frage - private Felder

Ich habe mir eine Klasse angesehen, die eine Methode enthält, die einen Parameter akzeptiert, der vom selben Typ wie die Klasse ist, die die Methode enthält.

Public Class test
   private _avalue as Integer
   Public Sub CopyFrom(ByVal from as test)
     _avalue = from._avalue
   End Sub
End Class

Bei Verwendung im Code

a.CopyFrom(b)

Scheint es, dass die Instanz "a" Zugriff auf die privaten Elemente der übergebenen Instanz "b" hat und die Zeile

_avalue = from._avalue 

ohne Fehler ausgeführt wird und das private Feld von einer Objektinstanz auf die andere kopiert.

Weiß jemand, ob dies beabsichtigt ist? Ich war der Meinung, dass ein privates Feld nur von der Instanz des Objekts zugänglich ist.

2voto

Binoj Antony Punkte 15610

Sie schreiben etwas Ähnliches wie einen Kopierkonstruktor.
Da die Kopiermethode/funktion innerhalb der gleichen Klasse geschrieben wird, hat sie Zugriff auf private Variablen jeder Instanz ihrer eigenen Klasse.

2voto

Fredrik Mörk Punkte 151006

Der private Bereich bezieht sich auf den Typ und nicht auf die Instanz. Ja, das ist also beabsichtigt.

Die Klasse test hat Kenntnisse über die privaten Teile von sich selbst, sodass sie diese Teile auch bei anderen Instanzen des gleichen Typs verwenden kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X