【问题标题】:Duplicating an array so it becomes unaffected c#复制数组使其不受影响c#
【发布时间】:2015-04-01 23:56:39
【问题描述】:

我试过了

int[] secondArray = firstArray;

但是每当我更改第一个数组时,它会在第二个中更改,是否有一个函数可以让我更改第一个而不影响第二个?

谢谢。

【问题讨论】:

  • 您需要阅读 .NET 中的参考资料。上面的代码创建了数组的第二个实例,但它们指向内存中的相同位置,因此指向相同的对象。 Jon Skeet 有一篇非常好的文章 - References and Values
  • 您可以循环并将第一个数组的值添加到第二个数组中。另外,请参阅stackoverflow.com/questions/733243/… 了解 Array.Copy 方法,这可能更容易。

标签: c# arrays copy


【解决方案1】:

那是因为你有一个对象是 firstArray 引用的“整数数组”。您的赋值语句只是增加对象的引用计数

我认为您可能正在寻找一种方法来提供 firstArray 的浅表副本?如果是,请使用clone 方法

【讨论】:

    【解决方案2】:

    正如蒂姆所说,您需要了解为什么会发生这种情况,因此请仔细阅读。 :)

    但你可以使用Array.CopyTo method:

    int[] firstArray = new int[20];
    int[] secondArray = new int[20];
    firstArray.CopyTo(secondArray, 0);
    

    但是你必须确保你自己不会溢出第二个数组,否则会抛出异常。

    【讨论】:

    • 谢谢我现在正在阅读它,所以我明白了为什么并感谢您的意见!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2016-08-10
    • 1970-01-01
    相关资源
    最近更新 更多