我正在從Java切換到C#,我想知道這是否可能?我想要做的是創建一個Enum {north, south, east, west}
類型的二維數組。通過這種方式,我可以撥打map[1,2].north
以查明地圖上的單元格是否有北牆。如何在C#中聲明Enum的二維數組?
對不起,粗略的代碼,我目前沒有訪問我的電腦,所以我有點抽象。
我正在從Java切換到C#,我想知道這是否可能?我想要做的是創建一個Enum {north, south, east, west}
類型的二維數組。通過這種方式,我可以撥打map[1,2].north
以查明地圖上的單元格是否有北牆。如何在C#中聲明Enum的二維數組?
對不起,粗略的代碼,我目前沒有訪問我的電腦,所以我有點抽象。
嘗試:
private EnumName[,] arrayName;
對於枚舉:
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);
這就是你如何使用enum
申報和測試牆。
namespace ConsoleApplication1
{
[Flags]
enum Wall
{
North = 1,
South = 2,
East = 4,
West = 8
}
static class Program
{
static void Main(string[] args)
{
int grid = 10;
var map=new Wall[grid, grid];
// fill in values here ...
if(map[1, 2].HasFlag(Wall.North))
{
// cell (2, 3) has a wall in the north direction
}
}
}
}
單元格是否可以有多個牆? – ja72
既然你來自Java,你可能想知道C#中的'enums' [比較弱](https://stackoverflow.com/a/1376455/3927)。 –