我正在使用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 },
};;
}
答案 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]);
}
}