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

还有另一个 2x2 整数数组,如下所示:

5 1
2 3

我想在 5x5 数组中选择一个位置,比如说 [2][2],然后将第二个数组中的值放入第一个数组中,因此它看起来像这样:

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”是它要移入的较大数组。它是随机 map 生成器的一部分,需要知道房间中瓷砖的哪些“边缘”上有可以连接到其他房间的门。 RoomDoors 存储 4 个 bool 值,每个方向一个,告诉我那里是否有一扇门。

    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<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];

关于c# - 将较小的数组复制到较大的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28089066/

相关文章:

c# - 过滤掉重复和包含列表的最佳/性能最佳方法

c# - 解析 Postman 中的日期对象以转换为 C# DateTime

c# - ASP.NET:我试图设置一个标签来显示图像按钮,但它没有显示页面,我该怎么做?

c# - ASP.NET Web API 2 - 序列化后字符串中的双反斜杠

c# - 在 Visual Studio Express 中开发 Silverlight?

c# - 创建 DynamicMethod 为属性赋值?

c# - 我应该在哪里放置 MEF 的接口(interface)?

c# - PInvoke 和 double*

c# - ANTLR 从 Java 到 C#

c# - 如何在 C# 中实现分段文本框,强制用户以特定格式输入值?