有没有一种方法可以用枚举中包含的枚举自动填充C#哈希集



假设我有一个枚举MyColors定义如下:

enum MyColors { Red, Green, Blue }

我想用该枚举的枚举来填充HashSet
我知道的唯一方法是:

var allColors = new HashSet<MyColors> { MyColors.Red, MyColors.Green, MyColors.Blue }

问题是每次我向枚举添加颜色时,我都必须更新我的哈希集

有没有一种方法可以在不手动从枚举中复制值的情况下定义该HashSet?

加分:HashSet是只读字段,因此在定义时需要对其进行初始化。

请注意,Enum.GetValuesEnum.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创建哈希集比较键。

最新更新