这两个枚举[Flags]声明(C#)之间有什么区别
发布时间:2020-12-15 23:59:08 所属栏目:百科 来源:网络整理
导读:这是一个我要求理解而不是找出问题的问题.考虑以下两点: [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 Flag
这是一个我要求理解而不是找出问题的问题.考虑以下两点:
[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,无法证明)使用一组不同的标志组合). 解决方法
如果没有显式数字,枚举每次都会增加1(即使指定了[Flags]),所以你得到:
[Flags] public enum Flags { NONE = 0x0,// = 1 PASSRENDER,// = 2 DELETE,// = 3 ACCEPTINPUT,// = 4 FADE_IN,// = 5 FADE_OUT,// = 6 FADE_OUT_COMPLETE// = 7 } 这根本不是你想要的数字(当然也不是按位标志,通常是2的连续幂) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |