【发布时间】:2011-02-21 15:23:25
【问题描述】:
可能的重复:
Anyone know a good workaround for the lack of an enum generic constraint?
Create Generic method constraining T to an Enum
是否可以将泛型类型参数 [我不知道这是否是正确的名称] 限制为 Enum?
例如,我该如何做这样的事情?
//VB.NET
Function GetValues(Of T As System.Enum)(ByVal value As T) As IEnumerable(Of T)
Return [Enum].GetValues(value.GetType)
End Function
//C#
public IEnumerable<T> GetValues<T>(T value) where T : System.Enum
{
return Enum.GetValues(value.GetType());
}
更新
我最终为此使用了 Jon Skeet 的 Unconstrained Melody。感谢大家的贡献。
【问题讨论】:
-
为什么不直接使用枚举而不是泛型??
-
在这里投票 visualstudio.uservoice.com/forums/121579-visual-studio/… 然后等待 C# 团队解决它十年。
-
+Martin Brown,你把 C# 和 Java 搞混了 :)