Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将较小的数组复制到较大的数组中_C# - Fatal编程技术网

C# 将较小的数组复制到较大的数组中

C# 将较小的数组复制到较大的数组中,c#,C#,我正在努力想出最优雅/简单的方法。也许我想得有点过头了 假设我有一个5x5的整数数组,如下所示: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 1 2 3 0 0 0 0 0 0 0 0 0 0 0 0 5 1 0 0 0 2 3 0 0 0 0 0 0 另一个2x2整数数组,如下所示: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 1 2 3 0 0 0 0 0 0 0

我正在努力想出最优雅/简单的方法。也许我想得有点过头了

假设我有一个5x5的整数数组,如下所示:

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
5 1
2 3
0 0 0 0 0
0 0 0 0 0
0 0 5 1 0
0 0 2 3 0
0 0 0 0 0
另一个2x2整数数组,如下所示:

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
5 1
2 3
0 0 0 0 0
0 0 0 0 0
0 0 5 1 0
0 0 2 3 0
0 0 0 0 0
我想在5x5数组中选择一个位置,比如[2][2],然后将第二个数组中的值放入第一个数组中,因此看起来如下所示:

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
5 1
2 3
0 0 0 0 0
0 0 0 0 0
0 0 5 1 0
0 0 2 3 0
0 0 0 0 0
我最初的想法是在确定要复制的数组中行/列的数量后使用for循环,但今天早上我似乎想不出一个方法来实现这一点

有什么建议吗

编辑:

对不起,这是我目前的做法。只是想知道有没有更好的办法

这实际上是我正在做的一件统一的事情的一部分——“RoomDoors”是我们更小的数组,“map”是它被移入的更大的数组。它是随机贴图生成器的一部分,需要知道房间中瓷砖的哪些“边”上有门,可以连接到其他房间。RoomDoors存储4个布尔值,每个方向一个,告诉我那里是否有门

    roomDoors = previousRoom.GetComponent<RoomDataInterface> ().rooms; //2d array of room/door arrangement in new room
    sizeCol = roomDoors.GetLength (0);
    sizeRow = roomDoors.GetLength (1);
    map [10, 10] = roomDoors [0, 0]; // top left of the room goes in the spot
    for (int i = 0; i < sizeCol; i ++){
        for (int j = 0; j < sizeRow; j ++) {
            map [i + 10,j + 10] = roomDoors[i,j];
        }
roomDoors=previousRoom.GetComponent().rooms//新房间中房间/门布置的二维阵列
sizeCol=roomDoors.GetLength(0);
sizeRow=roomDoors.GetLength(1);
地图[10,10]=房间门[0,0];//房间的左上角在这个地方
对于(int i=0;i
线路

map [10, 10] = roomDoors [0, 0];

是多余的,因为相同的分配将在循环的第一次迭代中执行。删除该行将产生更小、更高效的解决方案。

我认为您做得再好不过了,只需删除不必要的分配:

roomDoors = previousRoom.GetComponent<RoomDataInterface> ().rooms;
sizeCol = roomDoors.GetLength (0);
sizeRow = roomDoors.GetLength (1);
for (int i = 0; i < sizeCol; i ++)
  for (int j = 0; j < sizeRow; j ++) 
    map [i + 10, j + 10] = roomDoors[i, j];
roomDoors=previousRoom.GetComponent().rooms;
sizeCol=roomDoors.GetLength(0);
sizeRow=roomDoors.GetLength(1);
对于(int i=0;i
欢迎使用堆栈溢出。很抱歉,这不是一个好的提问方式。到目前为止,您是否尝试了任何方法来解决您的问题?请先展示您的努力,这样人们可能会展示他们的努力。请阅读,作为开始。两个嵌套的
for
循环如何,一个用于列,一个用于行?一些索引检查也会有所帮助。抱歉,我已将当前代码编辑到帖子中。该问题要求美化工作代码,使其也适用于