重载枚举运算符C#和Silverlight

问题描述:

只是一个学术问题: 当将Enum与int进行比较时,是否可以避免int转换?重载枚举运算符C#和Silverlight

int i = 0; 
if(i == (int)MyEnum.Whatever) 
{ 
} 

我想重载==操作符以这样的方式:

public static MyEnum operator ==(int lhs, MyEnum rhs) 
{} 

感谢您阅读;-)

你不能。见this similar question。正如在这个问题中提出的那样,你可以定义一个扩展方法来进行比较,以摆脱重复的转换。

+0

我看到了这个问题,但ChrisHDog在那个问题中询问了两个枚举的重载操作符,所以我有我的希望;-)但是,谢谢。 – 2010-03-11 11:22:09

不,不可能。问题是 - 你为什么要比较?

+0

因为我有来自数据库的int Id。 – 2010-03-11 11:22:32

+0

将枚举与int进行比较在与嵌入式应用程序或现场总线系统交谈时也很常见。 – OregonGhost 2010-03-11 11:26:19

+0

是的,从数据库位Id#s不真正映射到枚举;)通常。嵌入式Ints是有意义的。我会尽快枚举,然后继续比较枚举。尽快摆脱“低层次”的表现。 – TomTom 2010-03-11 11:40:38