【发布时间】:2011-07-13 15:55:18
【问题描述】:
enum MyEnum
{
Invalid=0,
Value1=1,
Value1=2,
}
void main ()
{
MyEnum e1 = MyEnum.Value1;
int i1 = 2;
// Is there any difference how to compare enumEration values with integers?
if ( e1==(MyEnum)i1 )... // 1st
if ( (int)e1==i1 )... // 2nd
在上述每种情况下,我们都将 enum 转换为 int 或将 int 转换为 enum。
这些转化(性能,任何其他)有什么不同吗?还是完全一样?
谢谢。
附:在当前示例中,我将其与“幻数”进行比较,但在实际应用中,我从 DB 的整数字段中获取数据。
【问题讨论】:
-
引入枚举类型部分是为了避免幻数。为什么要将其转换回整数?
-
Cast Int To Enum 可能会有所帮助。
-
选择第二个选项。如果整数超出枚举中定义的范围,第一个可能会导致异常。
-
在当前示例中,我与“幻数”进行比较,但在实际应用中,我从 DB 的整数字段中获取数据。
-
@XichenLi,有一种情况是使用整数值。这是您想要检查 Enum 参数的排名,查看某个值是否更高/更低等时。