为什么数组有时会链接?

时间:2016-10-27 01:13:39

标签: .net vb.net

像这样的东西按预期工作:

        Dim test(1) As Integer
        test = {1, 2}
        Dim test2(1) As Integer
        test2 = test
        test = {3, 4}
        test2 = {4, 5}

但有时在将一个数组设置为等于另一个数组后,对一个数组的更改将影响另一个数组。这迫使我在任何地方添加.clone。这是为什么?

2 个答案:

答案 0 :(得分:3)

代码test2 = test使两个变量test2test指向同一个数组。如果您对数组进行了任何更改,如:

test2(1) = 0
test(0) = 99

然后,testtest2都可以看到这些更改,因为它们是相同的数组

但是,当你这样做时:

test = {3, 4}

你没有改变现有的阵列;你正在创建一个新的并使test指向它。它的工作方式与test2 = test的工作方式相同 - 您重定向变量以指向内存中的其他数组。

那么你又回到了两个独立的数组,其中一个数据的变化没有反映在另一个数组中。

答案 1 :(得分:0)

test2 = test这意味着这些对象引用引用同一个对象。因此,如果您更改test,那么它也会更改test2