FlagsAttribute
类的预期目的是允许枚举用作标志......
[Flags]
enum Color
{
None = 0,
Red = 1,
Green = 2,
Blue = 4
}
请注意,数值会以指数方式增长以允许组合(即3 == Red | Green
)
假设我有一个包含100个不同值的枚举...如何考虑到最大值甚至不适合ulong
?
答案 0 :(得分:1)
使用枚举以外的东西。一个包含多个标志枚举的结构甚至只是内部的整数都可以使用。您可以将字段设置为私有,将选项列表设置为一组静态只读字段。只需添加您想要的操作员和方法,您应该好好去。
C#的标志枚举并不是很擅长他们所做的事情(例如,HasFlag会产生分配:Why Enum's HasFlag method need boxing?)。在制作枚举类型的替代方法时,您可以更有效,更通用地实现自己的等效方法。
clf
值得注意的是,您可能不需要100个二维空间颜色空间。对于颜色,如果你想要任何自定义颜色,你不需要标记枚举,只需要一个普通的枚举(如果你想要一组预定义的颜色)或类似带红绿色和蓝色值的结构。