c# - 如何在 C# 中声明枚举的二维数组?

标签 c# arrays enums

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

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

最佳答案

对于枚举:

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# 中声明枚举的二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743255/

相关文章:

javascript - postman :在环境变量的声明中使用请求名称

c# - C# 中的枚举类型约束

c# - 如何在 DataGridView 中不带空格地换行文本 (vb.net/c#)

c# - 将 2D 数组从托管 C++ 传递到非托管 C++

c# - 条件编译 - 逐步淘汰 C# 中的部分代码

mysql - Rails 单元测试中的枚举

c# - C# 动态程序集中的自引用枚举属性

c# - LINQ to SQL 连接字符串

python - 将值(0 除外)从数组 2 复制到数组 1

javascript - 表格 HTML 中的动态数组