【发布时间】:2013-03-01 06:45:44
【问题描述】:
快速健全性检查。 Array.Copy 是只针对一维数组,还是可以处理更多?
在阅读规范时,我阅读它(可能是错误的)意味着匹配必须发生在第二个维度上。 IE。源索引和目标索引可以不同,我们可以指定元素的数量。
好的,让我们来了解一下“匹配”。对于一个秩为 2 的数组被复制到另一个秩为 2 的数组中,比如 10x4 到 20x4,我们是说我们必须在维度 1 和 2 上匹配,还是只匹配两个维度。我需要它只在第二个维度上。
是在 .net 中使用循环机制实现此目的的唯一方法。如果是这样,那将比块复制慢得多。
看看这个:
static void Main(string[] args)
{
var A = new int[2,4] {{1, 1, 1, 1}, {2, 2, 2, 2}};
var B = new int[4,4];
var C = new int[4, 4];
Array.Copy(A, 0, B, 4, 8);
Array.ConstrainedCopy(A, 0, C, 8, 8); // haven't noticed this method before. Same behaviour though.
}
请注意,我们必须在世界的一维视图中指定正确的起点。我没想到会这样。
【问题讨论】:
-
您是否阅读过您提供的链接中的任何方法页面?
-
@Alastair Pitts:是的。请参阅更新的问题。目前正在查看适用于 1 级数组但不适用于 2 级(或可能更多)的实时代码。因此问题。
-
关键是文档中对“端到端”的引用。这是端到端的每个维度的布局。编辑了我的答案...