你能解释一下T: class, new()在下一行代码中是什么意思吗?

void Add<T>(T item) where T : class, new();

当前回答

这是对泛型参数t的约束。它必须是一个类(引用类型),并且必须有一个无公共参数的默认构造函数。

这意味着T不能是int、float、double、DateTime或任何其他结构(值类型)。

它可以是字符串,也可以是任何其他自定义引用类型,只要它有默认的或无参数的构造函数。

其他回答

这些是泛型类型约束。在你的例子中有两个:

where T : class

意味着类型T必须是引用类型(而不是值类型)。

where T : new()

意味着类型T必须有一个无参数的构造函数。有了这个约束,你可以这样做T field = new T();在你的代码中,你不能这样做。

然后用逗号将两者结合起来,得到:

where T : class, new()

这是对泛型参数t的约束。它必须是一个类(引用类型),并且必须有一个无公共参数的默认构造函数。

这意味着T不能是int、float、double、DateTime或任何其他结构(值类型)。

它可以是字符串,也可以是任何其他自定义引用类型,只要它有默认的或无参数的构造函数。

这意味着类型T必须是一个类,并且有一个不接受任何参数的构造函数。

例如,你必须能够这样做:

T t = new T();

它被称为泛型参数T上的“约束”。这意味着T必须是一个引用类型(一个类),并且它必须有一个公共默认构造函数。

当在约束中使用类时,这意味着你只能使用引用类型,另一件要添加的事情是何时使用约束new(),它必须是你在约束条款中写的最后一件事。