在 C# 中,使用 Flags
属性声明的枚举被称为标志枚举(Flag Enum)。标志枚举允许将多个枚举值组合成一个单独的值,以便同时表示多个状态或选项。
当你使用标志枚举时,可以通过按位运算来组合、拆分和检查枚举值。这使得标志枚举在表示各种组合状态的选项时非常有用。
[Flags] public enum EnumCustomFunction : long { 多涂层 = 1 << 0, 导入检测数据 = 1 << 1, 导入ABCard数据 = 1 << 2, 导出报告自适应列宽 = 1 << 3, 新项目管理 = 1 << 4, }
,EnumCustomFunction
是一个标志枚举,其中每个枚举值都是通过左移位运算符 <<
来定义的。例如,多涂层
的值是 1 左移 0 位,即 1,导入检测数据
的值是 1 左移 1 位,即 2,以此类推。
以下是一些标志枚举的常见用法:
-
组合枚举值:
EnumCustomFunction options = EnumCustomFunction.导入检测数据 | EnumCustomFunction.导入ABCard数据;
-
拆分枚举值:
if ((options & EnumCustomFunction.导入检测数据) == EnumCustomFunction.导入检测数据) { // 包含导入检测数据选项 }
if (customerforminfo != null && customerforminfo.ConfigSummary != null && ((EnumCustomFunction)customerforminfo.ConfigSummary & EnumCustomFunction.新项目管理) == EnumCustomFunction.新项目管理) { isaddproject = 1; }
-
添加或移除枚举值:
csharpCopy Codeoptions = options | EnumCustomFunction.新项目管理; // 添加新项目管理选项 options = options & ~EnumCustomFunction.多涂层; // 移除多涂层选项