2

以下のようなカスタムクラスがあります。

Public MyClass
  Public Property MyText() As String
End Class

次に、私のコード ページには、次の VB.NET コードがあります。

Dim obj1 As New MyClass
Dim obj2 As New MyClass

obj1 = obj2
obj1.MyText = "Test"

私の問題は、以下のコードが実行されると、obj2.MyText も更新されることです。どうすればこれを回避できますか?

obj1.MyText = "Test"

ありがとう。

4

3 に答える 3

2

これが問題です:

obj1 = obj2

obj2の値をto にコピーしますobj1。その値はオブジェクトではなく、オブジェクトへの参照です。同じオブジェクトobj1obj2参照するようにすると、一方の変数を介して行った変更は、もう一方の変数も表示されます。

これは C# ではなく VB であることは承知していますが、参照型と値型に関する私の記事が役に立つかもしれません。基本的に、参照型がどのように動作するかを理解する必要があります。

于 2012-08-14T13:30:53.143 に答える
0

その理由は、obj1 は obj2 のコピーではなく参照であるためです。obj1 を変更すると、同じメモリ位置/インスタンスを指しているため、obj2 も自動的に変更されます。

于 2012-08-14T13:31:12.003 に答える
-1

.NETはポインタに基づいているため、これが発生しました。

したがって、poiterを割り当てます。ではありません。

obj2 からobj1にデータをコピーするには、関数を使用する必要があります

例: http: //msdn.microsoft.com/en-us/library/system.string.copy.aspx#Y100

于 2012-08-14T13:34:11.780 に答える