有没有比 Enum.GetValues() 更好的方法来枚举枚举的值?



有几种情况,我想有一个枚举值的IEnumerable<MyEnum>。我通常使用的代码是这样的:

Enum.GetValues(typeof(MyEnum)).OfType<MyEnum>()

但它不仅不好看,而且大多数人需要几秒钟才能理解它的作用。这也是一个巨大的痛苦编写,特别是当您在整个代码中多次需要它时。

为了使我的工作更容易,我决定写一个这样的扩展方法:

public static IEnumerable<T> GetValues<T>(this T e) where T : Enum
{
    return Enum.GetValues(typeof(T)).OfType<T>();
}

除了我必须摆脱where T : Enum部分,因为"约束不能是特殊类'Enum'"。此外,这也不是我想要的,因为我需要写MyEnum.Value.GetValues()而不是MyEnum.GetValues(),这很令人困惑,也不是很漂亮。

这导致我这个问题:是否有更好的方法来获得枚举值的IEnumerable<MyEnum>比使用Enum.GetValues() ?

我真的没有别的选择,只能把它改成Helper.GetEnumValues<MyEnum>()吗?

如果可能的话,我想要一个在Unity中工作的解决方案,但任何解决方案都会受到赞赏。

这是完美的解决方案。net不提供强类型Enum。GetValues。人们只需要几秒钟就能理解它的作用,因为人们希望。net现在就提供一种类型的Enums的强类型枚举。

您正在正确使用GetValues作为MSDN建议。

最新更新