重载枚举运算符C#和Silverlight
只是一个学术问题: 在比较Enum和int时是否可以避免int强制转换重载枚举运算符C#和Silverlight,c#,operator-overloading,C#,Operator Overloading,只是一个学术问题: 在比较Enum和int时是否可以避免int强制转换 int i = 0; if(i == (int)MyEnum.Whatever) { } 我希望以如下方式重载==运算符: public static MyEnum operator ==(int lhs, MyEnum rhs) {} 感谢阅读;-) 你不能。看见正如那个问题中所建议的,您可以定义一个扩展方法来进行比较,以消除重复的强制转换。不,不可能。问题是-为什么要与in进行比较?我看到了这个问题,但问题中的Ch
int i = 0;
if(i == (int)MyEnum.Whatever)
{
}
我希望以如下方式重载==运算符:
public static MyEnum operator ==(int lhs, MyEnum rhs)
{}
感谢阅读;-) 你不能。看见正如那个问题中所建议的,您可以定义一个扩展方法来进行比较,以消除重复的强制转换。不,不可能。问题是-为什么要与in进行比较?我看到了这个问题,但问题中的ChrisHDog问的是两个枚举的重载运算符,所以我希望;-)但谢谢。因为我有数据库中的int Id。在与嵌入式应用程序、现场总线系统或其他东西交谈时,比较enum和int也是很常见的。是的,数据库中的位Id并不真正映射到enum;)正常地嵌入式系统中的Ints是有意义的。我会尽快转换到enum,然后继续比较enum。摆脱“低级”表示asim.imHo如果你认为狗表和繁殖在每行比应用程序是非常有用的有Enm’GalnReutiRe'=1等。