次の簡単なコードを考えてみましょう。
Dim v1 as A
Dim v2 as A
v1 = new A
v2 = v1
v1 = new A
このコードは、2つの異なるオブジェクトを参照するv1とv2につながります。
v2をv1のエイリアスにして、最終的にv2がv1と同じオブジェクトを参照するようにする方法を探しています。トリックを作るv1をv2に割り当てる特別な方法はありますか?
これは奇妙な要求であり、おそらくそれを解決するためのより良い方法がありますが、コンピュータサイエンスの他の場合と同様に、抽象化レイヤーを使用してこの問題を解決できます。
Public Class AContainer
Private a As A
Public ReadOnly Property A() As A
Get
Return a
End Get
End Property
Public Sub New(ByVal value As A)
a = value
End Sub
Public Sub Update(ByVal value As a)
a = value
End Sub
End Class
v1
これで、とv2
を同じインスタンスに設定するだけで、またはをAContainer
参照でき、それらは常にAの同じインスタンスを持ちます。v1.A
v2.A
多くの場合、必要な理由を再評価し、同じである必要がありv1
、v2
代わりに同じ参照を使用する必要があります。