【发布时间】:2011-07-25 07:29:07
【问题描述】:
我有两个这样声明的多维数组:
bool?[,] biggie = new bool?[500, 500];
bool?[,] small = new bool?[100, 100];
我想将大的部分复制到小的部分。假设我想要从索引 100 到 199 水平和 100 到 199 垂直。
我写了一个简单的 for 语句,如下所示:
for(int x = 0; x < 100; x++)
{
For(int y = 0; y < 100; y++)
{
Small[x,y] = biggie[x+100,y+100];
}
}
我在我的代码中经常这样做,这已被证明是主要的性能干扰。
Array.Copy 仅复制单维数组,而对于多维数组,它只是将整个矩阵视为单个数组,将每一行放在另一行的末尾,这不允许我剪切我的数组中间的一个正方形。
有没有更有效的方法来做到这一点?
Ps.:我确实考虑重构我的代码以便根本不这样做,并且对更大的数组做任何我想做的事情。复制矩阵不可能是无痛的,关键是我之前已经偶然发现了这个,寻找答案,但没有得到。
【问题讨论】:
标签: c# .net arrays performance multidimensional-array