【问题标题】:Overloading enum operator C# and Silverlight重载枚举运算符 C# 和 Silverlight
【发布时间】:2010-03-11 11:16:02
【问题描述】:

只是一个学术问题: 将 Enum 与 int 进行比较时是否可以避免 int 强制转换?

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

我想以这种方式重载 == 运算符:

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

感谢阅读 ;-)

【问题讨论】:

    标签: c# operator-overloading


    【解决方案1】:

    你不能。见this similar question。正如该问题中所建议的,您可以定义一个扩展方法来进行比较,以消除重复的强制转换。

    【讨论】:

    • 我看到了那个问题,但是那个问题中的 ChrisHDog 询问了两个枚举的重载运算符,所以我有我的希望 ;-) 但是谢谢。
    【解决方案2】:

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

    【讨论】:

    • 因为我有来自数据库的 int Id。
    • 在与嵌入式应用程序、现场总线系统或其他东西交谈时,将枚举与 int 进行比较也很常见。
    • 是的,来自数据库的位 Id#s 并没有真正映射到枚举;)通常。嵌入式中的整数是有道理的。我会尽快转换为枚举,然后继续比较枚举。尽快摆脱“低级”表示。
    猜你喜欢
    • 2023-03-18
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    相关资源
    最近更新 更多