如何将多维数组bool复制到其他数组中。一维数组使用长度,但我不确定这是否适用于多维数组。
bool[][] OldArray
bool[][] NewArray = new bool[][];
Array.Copy(NewArray,OldArray,NewArray.length)
答案 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
,因此它不像枚举那么慢。