私はクラスが定義されており、多くの値が定義されています。私はそれをコピーして、1つの変数を変更したい。しかし、私がこれを行うと、元のクラスの変数も変更されます。VBネットコピーのクラスと値の変更
私が使用しているコードを以下に示します。私が間違っていることは何ですか?
Dim NewClass As MyClass = PreviousClass(i)
NewClass.Value1 = NewVal
私はクラスが定義されており、多くの値が定義されています。私はそれをコピーして、1つの変数を変更したい。しかし、私がこれを行うと、元のクラスの変数も変更されます。VBネットコピーのクラスと値の変更
私が使用しているコードを以下に示します。私が間違っていることは何ですか?
Dim NewClass As MyClass = PreviousClass(i)
NewClass.Value1 = NewVal
これは、あなたのNewClass
オブジェクトをDim
とき、これは単にPreviousClass
オブジェクトへの別の参照を作成しているためになりそうです。したがって、変数名NewClass
とPreviousClass
はまったく同じオブジェクトを参照するため、NewClass.Value1 = NewVal
もPreviousClass
に影響します。 JaydipJが示すように
、あなたがオブジェクトのディープコピーが必要な場合があり、これら2つの答えは、彼らはあなたのための役に立つかもしれない見て -
このオブジェクトの「クローンを作成」してくれてありがとうございました。 – Chris
は、あなたがの話をしていることを確認していますクラスではなく構造ですか?構造体の定義を表示し、PreviousVar配列を初期化する方法 – Steve
申し訳ありませんクラスは – Chris
です@Chrisクラスに変更されたことを参照してください。これはクラスの目的全体です。 –