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必须有默认(无参数)ctor。

类型参数的约束(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 回答