我想了解该代码。我认为T必须IContinentFactory's实现类,但我不明白new()关键字的结尾。
class AnimalWorld<T> : IAnimalWorld where T : IContinentFactory, new()
{
.....
}
T: new()意味着类型 T 必须有一个无参数的构造函数。
通过您实际指定您可以T param = new T();在您的实现中编写AnimalWorld<T>
new()意味着T必须有默认(无参数)ctor。
约束new()意味着该类型T必须有一个公共的无参数实例构造函数。这包括所有值类型,但不是所有类。没有接口或委托类型可以有这样的构造函数。当new()约束存在时,T永远不能是抽象类。
当new()存在时,类中允许使用以下代码:
T instance = new T();
class AnimalWorld<T> : IAnimalWorld where T : IContinentFactory, new()
以下是声明的含义:
AnimalWorld是class带有泛型类型参数的TAnimalWorld必须实现IAnimalWorldT必须实现IContinentFactoryT必须有一个无参数的构造函数(这就是它的new用途)。