【发布时间】:2014-03-31 04:46:54
【问题描述】:
我有两个数组:
T[] array1D;
T[,] array2D;
它们每个都有相同的元素总数。
如果这些数组的维数相同,那么我可以简单地使用 Array.Copy 将数据从一个复制到另一个。但由于它们的维度数量不同,根据 MSDN 文档,我不能:
sourceArray 和destinationArray 参数的维数必须相同。
在分析了我的代码后,我确定单独复制每个元素对于我的目的来说太慢了。那么,是否有替代 Array.Copy 的替代方案,可以在不同维度的数组之间进行复制,其性能与 Array.Copy 相似?
谢谢!
(编辑)根据要求,这是我单独复制每个元素的代码:
int iMax = array2D.GetLength(0);
int jMax = array2D.GetLength(1);
int index = 0;
for(int i = 0; i < iMax; ++i)
{
for(int j = 0; j < jMax; ++j)
{
array1D[index] = array2D[i, j];
++index;
}
}
【问题讨论】:
-
贴出你用来复制的代码。还可以考虑包装一个数组,您只需在其中转换维数。
-
@Blam 已发布,谢谢。
-
您是否尝试过Buffer.BlockCopy 来展平二维数组? Jon Skeet's answer中的示例代码。
-
代码有多难写?您可以使用指针、不安全和原始 memcpy...