C#:复制2D阵列的部分

时间:2010-07-08 13:16:19

标签: c# .net .net-3.5

我正在使用基于图块的地图开发客户端 - 服务器游戏。 如果用户更改地图的可见部分(即向任何方向滚动),我会向服务器查询有关给出X,Y,宽度和高度的新部分的信息。

地图信息存储为2D数组

MapTile[,]

(MapTile是一个简单的结构)

当客户端请求新部分我想从地图图块数组中读取该部分时,为此我定义了一个方法

public MapTile[,] GetMapSection(Rectangle area)
{
  [... snip validation ...]
  MapTile[,] result = new MapTile[area.Width, area.Height];

  for (Int32 y = 0; y < area.Height; ++y)
  {
    for (Int32 x = 0; x < area.Width; ++x)
    {
       result[x, y] = this.map[x + area.X, y + area.Y];
    }
  }
  return result;
}

从阵列中获取该部分是否更容易(=>更易于阅读,理解和维护,不一定更快)?

2 个答案:

答案 0 :(得分:3)

不是真的。这似乎是一种明智而简单的方法。 .NET没有提供任何内置方法的原因是,与一维数组不同,复制/组合多维数组有多种不同的方式。

你真的不会变得更快,我认为它是完全可维护的。看起来好像很固定的代码。

答案 1 :(得分:0)

我在c#

的arraycopy的MS示例中找到了一个链接

Array copy using pointers