1

我正在使用 C# XNA 创建游戏。
我有一个 TileMap 存储在这样的int[,]数组中:

    int[,] Map = 
    {
        {1, 1, 1, 1, 1, 1, 1, 1 },
        {1, 1, 1, 1, 1, 1, 1, 1 },
        {1, 1, 1, 1, 1, 1, 1, 1 },
    };

我很好奇如何Map[,]通过我的类构造函数甚至在可能的方法中接受这种类型的数组并返回数组?

我想像这样返回int[,]

    public int[,] GetMap()
    {
        return 
    int[,] Map1 = 
    {
        {1, 1, 1, 1, 1, 1, 1, 1 },
        {1, 1, 1, 1, 1, 1, 1, 1 },
        {1, 1, 1, 1, 1, 1, 1, 1 },
    };;
    }
4

4 回答 4

2

我想你想要这个:

public int[,] GetMap()
{
    return new [,] 
    {
      {1, 1, 1, 1, 1, 1, 1, 1 },
      {1, 1, 1, 1, 1, 1, 1, 1 },
      {1, 1, 1, 1, 1, 1, 1, 1 },
    };
}

也可以是:

public int[,] GetMap()
{
    int [,] map = new [,]
    {
      {1, 1, 1, 1, 1, 1, 1, 1 },
      {1, 1, 1, 1, 1, 1, 1, 1 },
      {1, 1, 1, 1, 1, 1, 1, 1 },
    };

    return map;
}
于 2012-05-05T08:20:06.413 回答
1
void Method(int[,] map)
{
    // use map here
}

int[,] MethodWithReturn()
{
    // create Map here
    return Map;
}
于 2012-05-05T08:13:50.133 回答
0
public int[,] GetMap()
{
    int[,] map = new int[,]
    {
        {1, 1, 1, 1, 1, 1, 1, 1 },
        {1, 1, 1, 1, 1, 1, 1, 1 },
        {1, 1, 1, 1, 1, 1, 1, 1 },
    };

    return map;
}

你不能对多维数组使用隐式声明,所以你需要先声明数组,然后返回它。

于 2012-05-05T08:20:53.500 回答
0

你确实可以这样做:

return new int[,]
           {
               {1, 1, 1, 1, 1, 1, 1, 1},
               {1, 1, 1, 1, 1, 1, 1, 1},
               {1, 1, 1, 1, 1, 1, 1, 1}
           };

但是,如果您问的是如何从外部处理 int[,] ,当您不知道界限时...然后:

private static int[,] CreateMap(out int height)
{
    height = 3;

    return new int[,]
               {
                   {1, 1, 1, 1, 1, 1, 1, 1},
                   {1, 1, 1, 1, 1, 1, 1, 1},
                   {1, 1, 1, 1, 1, 1, 1, 1}
               };
}

从外部使用:

int height;
int[,] map = CreateMap(out height);

int width = map.Length / height;

for (int i = 0; i < height; i++)
{
    for (int j = 0; j < width; j++)
    {
        Console.WriteLine(map[i, j]);
    }
}
于 2012-05-05T08:24:22.290 回答