假设我有一个枚举MyColors
定义如下:
enum MyColors { Red, Green, Blue }
我想用该枚举的枚举来填充HashSet
我知道的唯一方法是:
var allColors = new HashSet<MyColors> { MyColors.Red, MyColors.Green, MyColors.Blue }
问题是每次我向枚举添加颜色时,我都必须更新我的哈希集
有没有一种方法可以在不手动从枚举中复制值的情况下定义该HashSet?
加分:HashSet是只读字段,因此在定义时需要对其进行初始化。
请注意,Enum.GetValues
和Enum.GetNames
没有帮助,因为HashSet的类型是MyColors
,并且这些函数返回不同的类型。
忽略任何其他问题(概念或其他(
您可以先使用GetValues
,然后使用Cast
var set = new HashSet<MyColors>(Enum.GetValues(typeof(MyColors)).Cast<MyColors>());
// or
var set = Enum.GetValues(typeof(MyColors))
.Cast<MyColors>()
.ToHashSet();
其他资源
枚举。GetValues方法
检索指定的枚举。
可枚举。铸造(IEnumerable(方法
将IEnumerable的元素强制转换为指定的类型。
可枚举。ToHashSet方法
使用比较器从IEnumerable创建哈希集比较键。