-1

是否有必要将enum具有选定值的 a 强制转换为 a 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
}
4

2 回答 2

0

Enum 的基础类型可以是任何整数类型。如果您不指定一个,它将默认为 int32。强制转换是必要的,因为枚举没有明确的整数相等比较 - 仅适用于其他枚举。像现在一样显式转换认为是最佳实践。看:

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

于 2013-06-05T14:19:10.447 回答
0

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

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

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

 

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

于 2013-06-05T14:58:26.603 回答