5

私はあなたが書くことができることを知っています:

class GenericClass<T> where T : new()
{ 

}

T空のコンストラクターを持つことを強制します。

私のQは:

  1. T特定のタイプのパラメーターを持つコンストラクターを持つことを強制できますか? お気に入り:

    class SingletonFactoryWithEmptyConstructor<T> where T : new(int)
    
  2. ジェネリッククラス内でこの関数を使用できるようTに、静的関数(たとえば、 )を強制できますか?void F()お気に入り :

    class GenericClass<T> where T : void F()
    { 
       void G ()
       {
           T.F();
       }
    }
    

    インターフェイスを実装するように指定できることは知ってTいますが、私はそれを望んでいません。T静的機能があることを指定したい。

4

1 に答える 1

6

いいえ、C# にはこのようなものはありません。

私は以前、「静的インターフェース」がこれを合理的にきちんと表現できると提案しました。それらはジェネリック型の制約にのみ役立ちます(とにかくと思います)が、次のように表現できます:

  • 任意のパラメーターを持つコンストラクター
  • 静的メソッドとプロパティ
  • オペレーター

これらのポイントの最後は、私の見解では特に興味深いものであり、適切な加算演算子と除算演算子を使用して、数値型に対して一般的な「平均」メソッドのようなものを許可します。

MS の何人かは似たようなことを考えていると思いますが、彼らがそれに積極的に取り組んでいることを示唆するものは何も聞いていません。

于 2011-05-07T07:54:39.347 に答える