如何使用FlagsAttribute
本文关键字:FlagsAttribute 何使用 | 更新日期: 2023-09-27 18:10:04
我的项目开发人员实现了以下enum
[Flags]
public enum Permissions
{
Overview = 1,
Detail = 3,
Edit = 7,
Delete = 31,
Block = 39, // Requires Edit = 7, and It's own location = 32. Therefore 7 + 32 = 39.
Unblock = 71, // Requires Edit = 7, and It's own location = 64. Therefore 7 + 64 = 71.
All = int.MaxValue
}
现在,你可以看到,例如,他制造了Details = 3
。他这样做的原因是细节(应该是2)也包括概述(2+1=3)。
我一直认为,做这些事情的方法是在枚举中使用2的幂,并在枚举之外进行任何上下操作。这是怎么回事?
在枚举中定义组合并没有错,这样可以让枚举的用户更轻松。也就是说,忽略组成组合的各种2的幂选项可能是一个短视的决定(不灵活且难以理解代码)。
文档建议以2的幂定义标记的枚举常量,但不限制将标记的枚举常量定义为任何可能的值。
定义以2为幂的枚举常量,即1、2、4、8等。这意味着组合枚举常量中的单个标志不重叠。