Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net VB net复制类和更改值_Vb.net - Fatal编程技术网

Vb.net VB net复制类和更改值

Vb.net VB net复制类和更改值,vb.net,Vb.net,我定义了一个类,其中定义了许多值。我想复制它,然后更改1个变量。但是,当我这样做时,它也会更改原始类中的变量 我使用的代码如下所示。知道我做错了什么吗 Dim NewClass As MyClass = PreviousClass(i) NewClass.Value1 = NewVal 这似乎是因为,当您将Dim设置为NewClass对象时,这只是创建了对PreviousClass对象的另一个引用。因此,变量名NewClass和PreviousClass引用的对象完全相同,这就是为什么NewC

我定义了一个类,其中定义了许多值。我想复制它,然后更改1个变量。但是,当我这样做时,它也会更改原始类中的变量

我使用的代码如下所示。知道我做错了什么吗

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

这似乎是因为,当您将
Dim
设置为
NewClass
对象时,这只是创建了对
PreviousClass
对象的另一个引用。因此,变量名
NewClass
PreviousClass
引用的对象完全相同,这就是为什么
NewClass.Value1=NewVal
也会影响
PreviousClass

正如JaydipJ所建议的,你可能需要一个对象的深度副本,这两个答案看起来可能对你有用-


你确定你说的是结构而不是阶级吗?请显示结构定义以及如何初始化PreviousVar arraysorry它是一个class@Chris我看到你改上课了,这就是上课的全部目的。。。结构变量是值类型,类变量是引用类型。这意味着,当您将一个结构变量指定给另一个变量时,每个数据都会复制到指定给的变量中,并且这两个数据分别存在于内存中。在类中,仅复制引用,因此,两个变量看到相同的数据。您可能正在查找对象的深度副本。感谢“创建此对象的“克隆”,而不是指向它”问题为我解决了它