【发布时间】:2011-04-04 18:43:11
【问题描述】:
我有一个这样定义的标志枚举:
[Flags]
public enum MyEnum
{
None = 0x00,
Choice1 = 0x01,
Choice2 = 0x02,
Choice3 = 0x04,
Default = Choice1 | Choice2,
All = Default | Choice3
}
我想要一种方法来打印出MyEnum.Default 中包含哪些标志。在这种情况下,我希望输出类似于“Choice1,Choice2”。
简单打印MyEnum.Default.ToString() 的问题在于,当我想要“Choice1,Choice2”时,输出将是“默认”。
这是一个选项,但如果我使用它,我必须在每次更改枚举时更新打印。
((StudyData.Choice1 & StudyData.Default) == StudyData.Choice1 ? StudyData.Choice1.ToString() : "") + ", " +
((StudyData.Choice2 & StudyData.Default) == StudyData.Choice2 ? StudyData.Choice2.ToString() : "") + ", " +
((StudyData.Choice3 & StudyData.Default) == StudyData.Choice3 ? StudyData.Choice3.ToString() : "")
有人有更清洁的方法吗?理想情况下,我想要一种打印出 MyEnum.Default 中包含的标志的方法,而无需在每次添加新标志或更改默认值时更改打印代码。
谢谢!
【问题讨论】: