如何在方法中返回int [,]?

时间:2012-05-05 08:12:09

标签: c# xna

我正在使用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 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

void Method(int[,] map)
{
    // use map here
}

int[,] MethodWithReturn()
{
    // create Map here
    return Map;
}

答案 2 :(得分: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;
}

您不能对多维数组使用隐式声明,因此您需要先声明数组,然后返回它。

答案 3 :(得分: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]);
    }
}