我正在从Java切换到C#,我想知道是否可行?我想做的是创建一个Enum {north, south, east, west}类型的二维数组。这样,我可以调用map[1,2].north来查找地图上的该单元格是否具有北墙。

很抱歉,我的原始代码目前无法访问我的计算机,所以我有点抽象。

最佳答案

对于枚举:

enum Dirs { North, South, East, West }


只需将数组声明为:

Dirs[,] dirs = new Dirs[10, 10];


如果您需要每个单元都具有多个墙,请使用[Flags]属性标记枚举,并将值设为2的幂:

[Flags]
enum Dirs { North = 1 << 0, South = 1 << 1, East = 1 << 2, West = 1 << 3 }


因此,您可以进行设置,例如:

dirs[1, 2] = Dirs.North | Dirs.East;


正如@ Scott Chamberlain在他的评论中提到的-要检查方向,您可以执行以下操作:

bool hasNorthWall = dirs[1, 2].HasFlag(Dirs.North);

关于c# - 如何在C#中声明Enum的2D数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45743255/

10-08 23:02