2

そのコードを理解したい。Tクラスを実装する必要があると思いますが、キーワードIContinentFactory'sの終わりがわかりません。new()

class AnimalWorld<T> : IAnimalWorld where T : IContinentFactory, new()
{
.....
}
4

4 に答える 4

6

T: new()タイプTにはパラメーターのないコンストラクターが必要であることを意味します。

それによって、あなたは実際にあなたがT param = new T();あなたの実装で書くことができることを指定しますAnimalWorld<T>

于 2013-02-17T19:39:00.967 に答える
5

new()Tこれは、デフォルト(パラメーターなし)のコンストラクターが必要であることを意味します。

タイプパラメータの制約(C#プログラミングガイド)

于 2013-02-17T19:39:03.380 に答える
4

制約new()は、型Tにパブリックパラメーターのないインスタンスコンストラクターが必要であることを意味します。これにはすべての値型が含まれますが、すべてのクラスが含まれるわけではありません。このようなコンストラクターを持つことができるインターフェースまたはデリゲート型はありません。new()制約が存在する場合T、抽象クラスになることはできません。

が存在する場合new()、次のコードがクラス内で許可されます。

T instance = new T();
于 2013-02-17T19:39:45.723 に答える
3
class AnimalWorld<T> : IAnimalWorld where T : IContinentFactory, new()

宣言の意味は次のとおりです。

  • AnimalWorldclassジェネリック型パラメータを持つT
  • クラスAnimalWorldは実装する必要がありますIAnimalWorld
  • 型パラメータTは実装する必要がありますIContinentFactory
  • 型パラメーターのクラスには、T引数のないコンストラクターが必要です (これnewが の目的です)。
于 2013-02-17T19:40:16.047 に答える