Referencias en VB.NET
Algo poco claro para mí son las referencias (¿punteros?) A las clases en VB.NET. La pregunta que estoy a punto de hacer puede responderse con un poco de prueba, pero me preguntaba si alguien podría publicar una explicación decente (o enlaces, también).
Si creas una clase:
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
Y luego una clase que realmente usa esta clase como una propiedad:
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
Y luego úsalo así:
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
Ahora la funciónBooleanCheck
siempre regresarátrue
, aunque la referencia se pase a la nueva claseUsingClass
"por valor", no por referencia. Entonces no se hace una copia de la clase, sino la variable localmyReference
enUsingClass
Todavía referencias / puntos a la propiedadReference
enRuntimeOrSomething
.
¿Cómo se puede explicar esto elegantemente?