2

重複の可能性: C# で
T を Enum Enum 型制約に制約するジェネリック メソッドを作成する

次のクラスを検討してください。

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

エリック・リッパートが言っているように、私は引用します

誰かが機能を設計、仕様、実装、テスト、文書化して出荷するまで、すべての機能は実装されていません。これまでのところ、誰もこれを行っていません。特に異常な理由はありません。やるべきことは他にもたくさんあり、予算も限られていますが、これは「これでいいんじゃないか」という意見を通り越したことがありません。言語設計チームでの議論。」

于 2012-09-24T05:44:21.677 に答える