为什么可以';比较变量和枚举(C#)

为什么可以';比较变量和枚举(C#),c#,enums,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 } }

我的参考代码:

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时出错。无论我如何尝试铸造这两个,我无法超越这一点。我相信有一个简单的解释。。。决心整天躲避我


我在这里错过了什么??提前感谢…

您需要将枚举强制转换为代表性的int值,然后进行比较

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

}

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

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

}

您正在将
uint
与特定类型的
enum
进行比较。比较时强制转换枚举:

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

您正在将
uint
与特定类型的
enum
进行比较。比较时强制转换枚举:

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

您是否尝试将枚举强制转换为uint
if(bk==(uint)ButtonKey.Key1)
为什么您首先声明
bk
uint
类型?为什么不
扣子呢
?我以为这失败了。重试,当然成功了。>_或者,只需将您的
bk
变量设置为
ButtonKey
类型。除非有理由不这样做(我怀疑,因为您给了枚举一个显式类型,所以这是有原因的)Jon。。。我不知道你能用C做这件事(我对C很陌生)。太好了。感谢您的快速反馈+1给你们所有人。你们试过将枚举强制转换为uint吗
if(bk==(uint)ButtonKey.Key1)
为什么您首先声明
bk
uint
类型?为什么不
扣子呢
?我以为这失败了。重试,当然成功了。>_或者,只需将您的
bk
变量设置为
ButtonKey
类型。除非有理由不这样做(我怀疑,因为您给了枚举一个显式类型,所以这是有原因的)Jon。。。我不知道你能用C做这件事(我对C很陌生)。太好了。感谢您的快速反馈+向你们大家致意。。。。我很惭愧。我以为我试过了,结果失败了。谢谢你,就是这样。。。。我很惭愧。我以为我试过了,结果失败了。谢谢,就是这样。