之间的速度会有所不同吗?
if (myInt == CONST_STATE1)
和
if (myEnum == myENUM.State1)
在c#中?
答案 0 :(得分:11)
在C#中,无论如何,枚举器都被编译为常量,所以好处是代码易读性
答案 1 :(得分:2)
使用Enums时要小心的是不要使用任何需要反射的操作(或小心使用它们)。例如:
对于常量,不存在执行任何需要反射的操作的选项。但是,如果是枚举,它确实如此。所以你必须小心这一点。
我见过个人资料报告,其中与枚举验证/反射相关的操作占用了CPU时间的5%(每次调用API方法时都会进行枚举验证)。通过编写一个缓存正在使用的枚举类型的反射结果的类,可以大大减少这种情况。
话虽如此,我建议根据从设计角度来看有意义的决定使用enum vs. constant 。这是确保团队了解涉及反射的操作的性能影响。
答案 2 :(得分:1)
另外,我不确定你是否需要担心这一点。这听起来像是过早的优化。我敢肯定,在任何系统中,都存在比枚举比较更大的瓶颈。 :)