是否有必要将带有选定值的枚举转换为int?

时间:2013-06-05 13:58:56

标签: c# enums

是否有必要将enum的选定值投放到int

MessageType是我的数据库中int类型的列。

.Where(x => x.MessageType == MyEnum.Sms)

此代码说明了:

  

'无法应用'int'类型的运算符'=='和ClassLibrary.MyEnum

如果enum投放到int

,则有效
.Where(x => x.MessageType == (int) MyEnum.Sms)

我的枚举:

public enum MyEnum
{
    None = 0,
    Sms = 1,
    Email = 2
}

2 个答案:

答案 0 :(得分:0)

Enum的底层类型可以是任何整数类型。如果您没有指明一个,它将默认为int32。强制转换是必要的,因为枚举没有明确的整数相等比较 - 仅适用于其他枚举。 被认为是现在明确投射的最佳做法。参见:

http://msdn.microsoft.com/en-us/library/system.enum.aspx

答案 1 :(得分:0)

  

是否必须将带有选定值的枚举强制转换为int?

完全不一定。你总是可以将int强制转换为枚举。

.Where(x => MyEnum.Sms == (MyEnum)x.MessageType)

或者,您可以将MessageType声明为MyEnum。然后就不会涉及整体。