2

可能重复:在 C# 中
创建将 T 约束为枚举枚举类型约束的通用方法

考虑以下类:

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
{
}

当然,上述内容会产生编译时错误。我的问题是为什么这被定为非法。大多数消息来源解释说这是非法的,但没有解释原因。有什么想法吗?

4

1 回答 1

3

正如Eric Lippert 所说,我引用

在有人设计、规范、实施、测试、记录和发布该功能之前,所有功能都未实现。到目前为止,没有人为此做过。没有什么特别不寻常的理由。我们还有很多其他事情要做,预算有限,而这件事从来没有超过“这不是很好吗?” 语言设计团队的讨论。”

于 2012-09-24T05:44:21.677 回答