这两个枚举[Flags]声明(C#)之间有什么区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了这两个枚举[Flags]声明(C#)之间有什么区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含809字,纯文字阅读大概需要2分钟。
内容图文
![这两个枚举[Flags]声明(C#)之间有什么区别](/upload/InfoBanner/zyjiaocheng/760/06f9c8ba11714562a041c9507e0b8db2.jpg)
这是一个我要求理解而不是找出问题的问题.考虑以下两点:
[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,
PASSUPDATE, // = 1
PASSRENDER,// = 2
DELETE,// = 3
ACCEPTINPUT,// = 4
FADE_IN ,// = 5
FADE_OUT,// = 6
FADE_OUT_COMPLETE// = 7
}
这根本不是你想要的数字(当然也不是按位标志,通常是2的连续幂)
内容总结
以上是互联网集市为您收集整理的这两个枚举[Flags]声明(C#)之间有什么区别全部内容,希望文章能够帮你解决这两个枚举[Flags]声明(C#)之间有什么区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。