可能重复:
Create Generic method constraining T to an Enum
Enum type constraints in C#
考虑以下课程:
public class Transition<TState>
{
public Transition ()
{
if (!typeof(TState).IsEnum)
throw (new ArgumentException("[TState] has to be of type [System.Enum]."));
}
}
理想情况下,这应该声明为:
public class Transition<TState> where TState: System.Enum
{
}
当然,上面会产生编译时错误。我的问题是为什么这是非法的。大多数消息来源解释说这是非法的,但不解释原因。有什么想法吗?
答案 0 :(得分:3)
作为Eric Lippert says和我引用
所有功能都未实现,直到某人设计,规格,工具,测试,文档和发布该功能。到目前为止,没有人为此做过。没有特别不寻常的原因;我们还有许多其他的事情要做,预算有限,而且这个从来没有超越过“这不是很好吗?”语言设计团队的讨论。“