【发布时间】:2013-06-10 13:52:57
【问题描述】:
来自关于 Array.Copy 方法的 MSDN 文档:
在多维数组之间复制时,数组的行为类似于一个长的一维数组,其中行(或列)在概念上是首尾相连的。例如,如果一个数组有三行(或列),每行有四个元素,从数组的开头复制六个元素将复制第一行(或列)的所有四个元素和第二行的前两个元素(或列)。
我一直认为,在 C# 中,二维数组以row-major order 布局(对于更高维度也是如此),所以我对上述文档中括号中的“或列”的含义感到困惑.这是否意味着 .NET Framework 可能在某些情况下使用列优先排序?
【问题讨论】:
-
这相当令人困惑。也许他们只是试图涵盖 (#rows == 1) 的情况。我很确定它总是以行优先顺序复制。否则,就会出现混乱!
-
这也是我最初的想法,但它不适用于“三行(或列),每行四个元素”部分。我目前的猜测是,对于转换行和列定义的人来说,它是这样写的。
-
我认为它试图成为行/列主要不可知论者;它并不关心您是否将第一个索引想象为表示行或列。
-
并非所有语言都将数组视为行优先。例如,FORTRAN 是列优先的。
Array.Copy的 .NET 文档必须与行/列无关。
标签: c# .net arrays multidimensional-array