我已经创建了一个枚举Direction,如下所示:

enum Direction { Up, Down, Left, Right }


现在,这些方向可以通过箭头按键来调用。我现在在KeyDown事件中具有的内容是:

if (e.KeyCode == Keys.Up)
{
    moveDirection = Direction.Up;
}
else if (e.KeyCode == Keys.Left)
{
    moveDireciton = Direction.Left;
}
else if ...


是否可以创建自己的像(Direction)Keys.Up这样的演员表?

我知道我可以创建一个静态方法static Direction CastKeysToDirection(Keys k);,对此我很好,但是我很好奇是否有一种方法可以在c#中实现我们自己的强制转换?

最佳答案

如果您将枚举定义为

enum Direction {
    Up = Keys.Up,
    Down = Keys.Down,
    Left = Keys.Left,
    Right = Keys.Right
}


那么您的强制转换(Direction)Keys.Up应该基于以下事实起作用:Keys.Up的基础数值与Direction.Up的基础数值相同。

但是,令人遗憾的是,您无法像在explicit上那样在impilcit上提供真实的enumclass强制转换。

关于c# - 将Keys对象转换为枚举Direction对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15091805/

10-12 20:28