Referenzen in VB.NET
Etwas unklar sind für mich Verweise (Zeiger?) Auf Klassen in VB.NET. Die Frage, die ich stellen werde, kann durch ein wenig Testen beantwortet werden, aber ich habe mich gefragt, ob jemand eine anständige Erklärung (oder auch Links) posten kann.
Wenn Sie eine Klasse erstellen:
Public Class ReferenceClass
Private myBooleanValue As Boolean = False
Public Property BooleanValue As Boolean
Get
Return myBooleanValue
End Get
Set(value As Boolean)
myBooleanValue = value
End Set
End Property
End Class
Und dann eine Klasse, die diese Klasse tatsächlich als Eigenschaft verwendet:
Public Class UsingClass
Private myReference As ReferenceClass
Public Property Reference As ReferenceClass
Get
return myReference
End Get
Set(value As ReferenceClass)
myReference = value
End Set
End Property
Public Sub New(ByVal Reference As ReferenceClass)
myReference = Reference
End Sub
End Class
Und dann benutze es so:
Public Class RuntimeOrSomething
Public Shared myReference As ReferenceClass
Public Shared ReadOnly Property Reference As ReferenceClass
Get
If myReference Is Nothing Then myReference = new ReferenceClass()
return myReference
End Get
End Property
Public Shared Function BooleanCheck() As Boolean
Reference.BooleanValue = True
Dim tempClass As New UsingClass(Reference)
tempClass.Reference.BooleanValue = False
Return (tempClass.Reference.BooleanValue = Reference.BooleanValue)
End Sub
Public Shared Sub DoNothing()
Reference.BooleanValue = True
Dim someBoolean As Boolean = BooleanCheck
' Now Reference.Booleanvalue is "False"
End Sub
End Class
Jetzt die FunktionBooleanCheck
gibt immer @ zurütrue
, obwohl die Referenz an die neue Klasse übergeben wirdUsingClass
"nach Wert", nicht nach Referenz. Es wird also keine Kopie der Klasse erstellt, sondern die lokale VariablemyReference
imUsingClass
verweist noch auf die EigenschaftReference
imRuntimeOrSomething
.
Wie lässt sich das elegant erklären?