将枚举作为函数中的参数传递

Pass Enum as an argument in a function

所以我在许多不同的地方寻找这个问题的答案,但我没有找到适合我的情况的答案。我正在使用 MonoGame (Microsoft XNA) 开发游戏,我想要一个 class 来处理我的输入。由于 XInput 只能检查特定帧上的键是否按下,我想创建自己的函数来检查它是否被按下、释放或按住。

这是我的问题:

    public static void getKeyPress(Enum key)
    {
        updated = Keyboard.GetState();
        if (updated.IsKeyDown(/* what can i put here to have key be the 'Keys' enum */))
        {

        }

        if (updated.IsKeyDown(Keys.Space))
        {

        }

    }

所以,我的问题是我不知道如何使用我拥有的键 Enum 作为函数的参数。我试图将它作为 IsKeyDown 函数的参数,它包含在 XNA 框架中。 IsKeyDown 函数只接受来自框架预构建的 Keys 枚举的内容。第二个 if 语句显示了函数的正确用法,Keys.Space。我想让 getKeyPress 函数像这样工作:

if (getKeyPress(Keys.Backspace))
{
    //backspace was pressed
}

或者,这也行得通:

if (getKeyPress(Backspace))
{
    //backspace was pressed
}

我完全迷路了,如果有人能帮我解决这个问题,我将不胜感激。

如果我没理解错的话,您应该可以只更改方法签名以指定要传入的类型。在您的情况下,您需要 Keys 枚举。

public static void getKeyPress(Keys key)
{
    updated = Keyboard.GetState();
    if (updated.IsKeyDown(key))
    {
    }

    if (updated.IsKeyDown(Keys.Space))
    {
    }
}