C# C语言中二维数组的有效压缩#

C# C语言中二维数组的有效压缩#,c#,.net,arrays,data-structures,multidimensional-array,C#,.net,Arrays,Data Structures,Multidimensional Array,用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 =

用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);
您将如何编写一些ShrinkingMethod()

谢谢


编辑:我只是尝试将bigArray的前10行和前10列放入smallArray,但我不确定通过数组循环是否是最有效的方法。

您必须创建一个所需大小的新数组(在代码中,您已经这样做了)并复制内容。我不确定在你的情况下“缩小”行动需要做什么。但是,不能修改现有阵列的维度

您建议的函数有缺陷,因为它无法知道目标数组的尺寸。要么将维度传递给它并在内部对新数组进行维度标注,要么将目标数组传递给它并简单地复制内容

编辑:
回应您的编辑:是的,循环将是合理的方式来做到这一点,这也是合理的速度。我不知道.NET中有一种可以应用于多维数组的块复制机制。

取决于收缩函数的作用。您必须创建一个新数组,并根据您的条件进行复制。我的假设是你有一个2d数组是有原因的,对吧?副本可以是琐事(找到具有非零值的下一个位置并将其放在目标中的下一个可用位置)或基于其他内容。你能提供更多信息吗?

是的,最好的方法几乎肯定是在每个单元格上循环,尽管可能复制每个“行”的序列。该方法需要知道要从源方复制的方的较低索引,以及大小(可能隐含在目标方定义中)。

谢谢您的回答。。请查看编辑后的示例。我只是尝试将前10x10个对象从bigArray复制到smallArray。我只是不确定是否有比运行嵌套for循环更有效的方法。谢谢for循环将执行您想要的操作,而不会产生大量不必要的开销。如果你所做的只是复制,那么这就是你要做的。