2016-08-23 1 views
1

Ich habe eine Klasse definiert, mit vielen Werten definiert. Ich möchte eine Kopie davon machen und dann 1 Variable ändern. Wenn ich dies tue, ändert sich auch die Variable in meiner ursprünglichen Klasse.VB net Kopierklassen und Werte ändern

Der Code, den ich verwende, ist unten abgebildet. Irgendwelche Ideen, was ich falsch mache?

Dim NewClass As MyClass = PreviousClass(i) 
NewClass.Value1 = NewVal 
+0

Bist Du sicher, dass Sie sprechen von Struktur und nicht Klasse? Bitte zeigen Sie die Strukturdefinition und wie initialisieren Sie das PreviousVar Array – Steve

+0

Entschuldigung, es ist eine Klasse – Chris

+0

@Chris Ich sehe Sie in Klasse geändert, das ist der ganze Zweck der Klasse ... Es würde mit Struktur arbeiten. –

Antwort

2

Dies, weil sein aussieht, wenn Sie Ihr NewClass Objekt Dim, dies ist einfach eine andere Referenz zum PreviousClass Objekt zu erzeugen. Die Variablennamen NewClass und PreviousClass verweisen daher auf genau das gleiche Objekt, weshalb NewClass.Value1 = NewVal auch auf PreviousClass wirkt.

Wie JaydipJ schon sagt, Sie eine tiefe Kopie des Objekts benötigen, diese beiden Antworten suchen sie für Sie nützlich sein könnten -

Create a “clone” of this object, not point to it

copy one object to another

+0

Dank der 'Erstellen Sie einen "Klon" dieses Objekts, nicht darauf zeigen' Frage löste es für mich – Chris