【发布时间】:2015-07-16 09:49:41
【问题描述】:
我注意到较新版本的 C# 允许使用 [flags] 属性调整 enum 构造以表示一组按位标志。
在我看来,C# 已经有一个非常好的结构,称为 HashSet 来表示一个集合,并且我经常在我的代码中使用枚举的 Hashset。除了处理效率之外,是否还有其他示例,其中标志枚举提供了使用普通集合无法完成的功能?
恕我直言,传统枚举在语义上与一组标志如此不同,使用属性将一个属性转换为另一个似乎是完全的混蛋。
【问题讨论】:
-
Flags从一开始就存在,没有语义价值。它拥有的唯一功能是改变ToString的行为方式。您仍然需要提供正确的值。 -
一些重构和代码分析工具也注意到了它的存在。
-
我不知道您所说的“传统枚举”是什么意思,但我记得 30 年前在 C 代码中工作时使用了那些“混蛋”枚举。据我所知,只要
enum出现在 C 语言中,使用枚举来保存标志值的技术就已经存在了。
标签: c# data-structures enums set