そのコードを理解したい。T
クラスを実装する必要があると思いますが、キーワードIContinentFactory's
の終わりがわかりません。new()
class AnimalWorld<T> : IAnimalWorld where T : IContinentFactory, new()
{
.....
}
T: new()
タイプTにはパラメーターのないコンストラクターが必要であることを意味します。
それによって、あなたは実際にあなたがT param = new T();
あなたの実装で書くことができることを指定しますAnimalWorld<T>
new()
T
これは、デフォルト(パラメーターなし)のコンストラクターが必要であることを意味します。
制約new()
は、型T
にパブリックパラメーターのないインスタンスコンストラクターが必要であることを意味します。これにはすべての値型が含まれますが、すべてのクラスが含まれるわけではありません。このようなコンストラクターを持つことができるインターフェースまたはデリゲート型はありません。new()
制約が存在する場合T
、抽象クラスになることはできません。
が存在する場合new()
、次のコードがクラス内で許可されます。
T instance = new T();
class AnimalWorld<T> : IAnimalWorld where T : IContinentFactory, new()
宣言の意味は次のとおりです。
AnimalWorld
class
ジェネリック型パラメータを持つT
AnimalWorld
は実装する必要がありますIAnimalWorld
T
は実装する必要がありますIContinentFactory
T
引数のないコンストラクターが必要です (これnew
が の目的です)。