为什么我不能在变量和枚举(C#)之间进行比较

Nan*_*urf 1 c# enums

我的参考代码:

uint bk = 0;
enum ButtonKey : uint
{
   None = 0,
   Key1,
   Key2
};

private void button_Click(object sender, EventArgs e)
{
    bk = (uint)ButtonKey.Key1;
}

void foo()
{
    if( bk == ButtonKey.Key1 )
    {
        // so something
    }
}
Run Code Online (Sandbox Code Playgroud)

我在bk == ButtonKey.Key1比较中得到了一个错误.无论我如何试图抛出这两个,我都无法超越这个.我确信有一个简单的解释......我决心整天躲避我!

我在这里失踪了什么?提前致谢...

xan*_*ded 8

您将a uint与特定类型的enumeration 进行比较.比较时转换枚举:

if( bk == (uint)ButtonKey.Key1 )
{
    // so something
}
Run Code Online (Sandbox Code Playgroud)

更好的解决方案是改变以下类型bk:

ButtonKey bk;
enum ButtonKey
{
   None = 0,
   Key1,
   Key2
};

private void button_Click(object sender, EventArgs e)
{
    bk = ButtonKey.Key1;
}

void foo()
{
    if( bk == ButtonKey.Key1 )
    {
        // so something
    }
}
Run Code Online (Sandbox Code Playgroud)