我想了解该代码。我认为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
带有泛型类型参数的T
AnimalWorld
必须实现IAnimalWorld
T
必须实现IContinentFactory
T
必须有一个无参数的构造函数(这就是它的new
用途)。