3
这是更多的问题,我要求了解而不是找出问题。考虑以下两种:这两个枚举[标志]声明(C#)之间的区别是什么
[Flags]
public enum Flags
{
NONE = 0x0,
PASSUPDATE = 0x1,
PASSRENDER = 0x2,
DELETE = 0x4,
ACCEPTINPUT = 0x8,
FADE_IN = 0x10,
FADE_OUT = 0x20,
FADE_OUT_COMPLETE = 0x40
}
[Flags]
public enum Flags
{
NONE = 0x0,
PASSUPDATE,
PASSRENDER,
DELETE,
ACCEPTINPUT,
FADE_IN ,
FADE_OUT,
FADE_OUT_COMPLETE
}
如果我使用后者枚举类型的东西有点检查有时是重叠的(我认为像DELETE
被解释为PASSUPDATE | PASSRENDER
,而在第一个例子中的每个条目是独立于其他的(即DELETE
只有DELETE
,不能使用一组不同的标志的组合被证明)
显示代码,其中删除被评估为两个Pass? – 2011-05-22 13:57:15
'[Flags]'属性不会神奇地将枚举转换为二进制枚举。 – BoltClock 2011-05-22 13:58:36
你应该重新思考这个枚举代表什么。显然,它开始代表一个状态,淡入,淡出和淡入完成同时处于活动状态没有什么意义。小心避免添加真正应该是单独属性的枚举成员。现在删除[标志],问题解决了。 – 2011-05-22 15:36:13