如何在方法中返回 int[,]
本文关键字:int 返回 方法 | 更新日期: 2023-09-27 18:33:11
我正在使用C# XNA创建一个游戏。
我有一个存储在int[,]
数组中的 TileMap,如下所示:
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 },
};;
}
我想你想要这个:
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;
}
void Method(int[,] map)
{
// use map here
}
int[,] MethodWithReturn()
{
// create Map here
return Map;
}
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;
}
不能对多维数组使用隐式声明,因此需要先声明数组,然后再返回它。
你确实可以做到:
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]);
}
}