私はJavaからC#に切り替えていますが、これが可能かどうか疑問に思っていますか?私がしたいのは、タイプEnum {north, south, east, west}
の2次元配列を作成することです。そうすれば、map[1,2].north
に電話して、地図上のそのセルが北の壁かどうかを調べることができます。C#でEnumの2D配列を宣言するにはどうすればよいですか?
申し訳ありませんが、原型コードの場合は、現在自分のコンピュータにアクセスできませんので、少し抽象的です。
私はJavaからC#に切り替えていますが、これが可能かどうか疑問に思っていますか?私がしたいのは、タイプEnum {north, south, east, west}
の2次元配列を作成することです。そうすれば、map[1,2].north
に電話して、地図上のそのセルが北の壁かどうかを調べることができます。C#でEnumの2D配列を宣言するにはどうすればよいですか?
申し訳ありませんが、原型コードの場合は、現在自分のコンピュータにアクセスできませんので、少し抽象的です。
すると、その方法を試してください。列挙型の場合
private EnumName[,] arrayName;
:
enum Dirs { North, South, East, West }
と同じように配列を宣言:あなたは、いくつかの壁を持つことができるように、各セルが必要な場合は
Dirs[,] dirs = new Dirs[10, 10];
enumを[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)。 –