我想了解那段代码。我认为T
必须是IContinentFactory's
已实施的课程,但我不理解new()
关键字的结尾。
class AnimalWorld<T> : IAnimalWorld where T : IContinentFactory, new()
{
.....
}
答案 0 :(得分:6)
T: new()
表示类型T必须具有无参数构造函数。
您实际上指定可以在T param = new T();
AnimalWorld<T>
答案 1 :(得分:5)
new()
表示T
必须具有默认(无参数)ctor。
<强> Constraints on Type Parameters (C# Programming Guide) 强>
答案 2 :(得分:4)
约束new()
表示类型T
必须具有公共无参数实例构造函数。这包括所有值类型,但不包括所有类。没有接口或委托类型可以有这样的构造函数。当存在new()
约束时,T
永远不能成为抽象类。
当new()
存在时,类中允许使用以下代码:
T instance = new T();
答案 3 :(得分:3)
class AnimalWorld<T> : IAnimalWorld where T : IContinentFactory, new()
声明的含义如下:
AnimalWorld
是class
,其泛型类型参数为T
AnimalWorld
必须实施IAnimalWorld
T
必须实现IContinentFactory
T
的类必须具有无参数构造函数(这是new
的用途)。