Referências no VB.NET
Um pouco claro para mim são as referências (ponteiros?) Para as classes no VB.NET. A pergunta que estou prestes a fazer pode ser respondida com alguns testes, mas eu queria saber se alguém poderia postar uma explicação decente (ou links também).
Se você criar uma classe:
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
E então uma classe que realmente usa essa classe como uma propriedade:
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
E então use-o assim:
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
Agora a funçãoBooleanCheck
sempre retornarátrue
, mesmo que a referência seja passada para a nova classeUsingClass
"por valor", não por referência. Portanto, uma cópia da classe não é feita, mas a variável localmyReference
noUsingClass
ainda referências / pontos à propriedadeReference
noRuntimeOrSomething
.
Como isso pode ser explicado de maneira elegante?