VB.NET のクラスへの参照 (ポインタ?) は、私にはやや不明確です。私が尋ねようとしている質問は、少しテストすることで答えることができますが、誰かが適切な説明 (またはリンクも) を投稿できるかどうか疑問に思っていました。
クラスを作成する場合:
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
そして、実際にこのクラスをプロパティとして使用するクラス:
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
そして、次のように使用します。
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
これで、参照が参照ではなく「値によって」新しいクラスに渡されたとしても、関数BooleanCheck
は常に を返します。そのため、クラスのコピーは作成されませんが、 のローカル変数は引き続き のプロパティを参照/ポイントします。true
UsingClass
myReference
UsingClass
Reference
RuntimeOrSomething
これはどのようにエレガントに説明できますか?