【发布时间】:2021-03-25 16:15:29
【问题描述】:
我有一个网格,一个瓦片矩阵。
enum Tile
{
Nothing = 0,
Forest = 1,
River = 2,
OB = 3
}
class Grid
{
public const int X = 6;
public const int Y = 6;
private Tile[,] Board { get; set; }
public Grid()
{
Board = new Tile[X, Y];
}
}
我想要一个接受int[,] board的Ctor。
不是的边缘情况:
- 大小不同。可以使用
.GetLength(0)检查以匹配 const int X 。投掷。 - 未知的值
(Tile)12,设置为默认值 int =0。
所以我有
public Grid(int[,] board)
{
if (board.GetLength(0) != Y || board.GetLength(1) != X) {
throw new ArgumentException();
}
Board = new Tile[Y, X];
for (int i = 0; i < Y; i++)
for (int j = 0; j < X; j++) {
var enumValue = (Enum.IsDefined(typeof(Tile),board[i, j]))? (Tile)board[i, j]: default(Tile) ;
Board[i, j] = enumValue;
}
}
有没有直接的方法将 int 2d array int[,] 转换为 enum 2d array enum[,]?
我尝试了 Cast 的各种组合,如 ()。没有成功。
【问题讨论】:
标签: c#