我正在使用 C#,我必须在屏幕上操作一个对象。我设置了一个结构来保存坐标,然后我设置了一个枚举来限制可以移动的方向的数量。
private enum Direction
{
UpperLeft = new Coord(-1, -1),
UpperCenter = new Coord(0, -1),
UpperRight = new Coord(1, -1),
Left = new Coord(-1, 0),
Right = new Coord(1, 0),
LowerLeft = new Coord(-1, 1),
LowerCenter = new Coord(0, 1),
LowerRight = new Coord(1, 1)
};
private struct Coord
{
public int row { get; private set; }
public int col { get; private set; }
public Coord(int r, int c) : this()
{
row = r;
col = c;
}
public static Coord operator +(Coord a, Coord b)
{
return new Coord(a.row + b.row, a.col + b.col);
}
}
基本上我的目标是让屏幕上的对象根据分配的枚举移动。
所以我想假设像这样使用它或其他东西:
public class ThingThatMovesToTheLeft
{
Direction dir = Direction.Left;
Coord pos = new Coord(0,0);
public void Move()
{
this.pos = this.dir + this.pos;
}
}
本质上我的问题是如何将我的枚举类型转换回我的结构,以便我可以以这种方式使用它?我似乎无法将其转换回结构。(此外,VisualStudio 让我将枚举分配给那些 Coord 结构而不会抱怨,所以我认为可以将结构分配给枚举,这是可以接受的做法还是不应该这样做?)