为什么可以';比较变量和枚举(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
}
}
您是否尝试将枚举强制转换为uintif(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很陌生)。太好了。感谢您的快速反馈+向你们大家致意。。。。我很惭愧。我以为我试过了,结果失败了。谢谢你,就是这样。。。。我很惭愧。我以为我试过了,结果失败了。谢谢,就是这样。