代码之家  ›  专栏  ›  技术社区  ›  Morfildur

C#:复制2D数组的部分

  •  0
  • Morfildur  · 技术社区  · 14 年前

    我在做一个客户端服务器游戏,有一个平铺地图。

    地图信息存储为二维数组

    MapTile[,]
    

    (MapTile是一个简单的结构)

    当客户机请求一个新的节时,我想从map tile数组中读取该节,为此我定义了一个方法

    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 回复  |  直到 14 年前
        1
  •  4
  •   Noldorin    14 年前

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

    你不会真的跑得更快,而且我认为它是完全可以维护的。似乎是相当固定的代码。

        2
  •  0
  •   InsertNickHere    14 年前

    我在一个MS示例上找到了一个用c编写的arraycopy的链接#

    Array copy using pointers