1

我的参考代码:

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
    }
}

我得到一个bk == ButtonKey.Key1比较错误。无论我如何尝试施放这两个,我都无法超越这一点。我敢肯定有一个简单的解释...决心整天躲避我!

我在这里想念什么?提前致谢...

4

2 回答 2

8

您正在将 auint与特定类型的enumeration 进行比较。比较时投射枚举:

if( bk == (uint)ButtonKey.Key1 )
{
    // so something
}

更好的解决方案是更改 的类型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
    }
}
于 2013-10-09T16:02:51.993 回答
2

您需要将枚举转换为具有代表性的 int 值,然后您可以对其进行比较

if(bk == (uint) ButtonKey.Key1)
{

}
于 2013-10-09T16:02:36.910 回答