在C#中将二维数组缩小到较小尺寸的有效方法是什么?
例如:
var bigArray = new object[100, 100];
var smallArray = new object[10, 10];
bigArray[0, 0] = 1;
bigArray[0, 1] = 2;
...
bigArray[99, 99] = 100000;
startRowIndex = 0;
startColumnIndex = 0;
endRowIndex = 9;
endColumnIndex = 9;
smallArray = bigArray.SomeShirnkingMethod(startRowIndex, startColumnIndex, endRowIndex, endColumnIndex);
你将如何写SomeShrinkingMethod()?
谢谢!
编辑:我只是想把bigArray的前10行和列放到smallArray中,但我不确定循环通过数组是否是最有效的方法。
答案 0 :(得分:4)
你必须创建一个所需大小的新数组(在你的代码中,你已经完成了这个)并复制内容。我不确定在你的情况下需要做什么“缩小”操作。但是,您无法修改现有阵列的尺寸。
您提出的功能有缺陷,因为它无法知道目标阵列的尺寸。您可以在内部传递尺寸和尺寸,也可以将目标数组传递给目标数组,然后复制内容。
响应您的编辑:是的,循环将是合理的方法,这也是相当快。我不知道.NET中可以应用于多维数组的块复制机制。
答案 1 :(得分:1)
取决于您希望缩小功能的功能。你必须制作一个新阵列并根据你的标准进行复制。我的假设是你有一个二维阵列是有原因的,对吧?副本可以是琐事(找到具有非零值的下一个位置并将其放在目标中的下一个可用位置)或基于其他内容。你能提供更多信息吗?
答案 2 :(得分:0)
是的,最好的方法几乎肯定是循环遍历每个单元格,尽管可以复制每个“行”的序列。该方法需要知道要从源方块复制的方形的较低索引和大小(可能隐含在目标方形定义中)。