将多维数组bool复制到另一个数组中

时间:2014-02-27 19:29:44

标签: c#

如何将多维数组bool复制到其他数组中。一维数组使用长度,但我不确定这是否适用于多维数组。

bool[][] OldArray
bool[][] NewArray = new bool[][];

Array.Copy(NewArray,OldArray,NewArray.length)

2 个答案:

答案 0 :(得分:3)

这不是一个多维数组,它是一个锯齿状数组(数组数组)。

bool[,] multiDimArray;

是多维的

bool[][] jaggedArray;

是锯齿状的。不同之处在于多维数组始终是矩形的,而锯齿状数组则不一定是。

要复制多维数组(第一种情况),您只需将每个维度的长度相乘,因为(来自MSDN):

  

在多维数组之间进行复制时,数组的行为类似于长一维数组,其中行(或列)在概念上是端对端放置的。例如,如果一个数组有三行(或列),每行包含四个元素,则从数组开头复制六个元素将复制第一行(或列)的所有四个元素和第二行的前两个元素(或列)。

对于锯齿状,你需要循环遍历第一个维度,然后依次为Array.Copy每个内部数组。

答案 1 :(得分:1)

Matt Burland是对的;这是一个锯齿状的数组,无法使用Array.Copy进行复制。但是,由于您正在初始化它,因此可以使用LINQ。

bool[][] oldArray;
bool[][] newArray = oldArray.Select(innerArray => innerArray.ToArray()).ToArray();

内部复制在内部使用Array.CopyTo,因此它不像枚举那么慢。