[英]Generic class and Constraint
我正在使用泛型类和约束。 以下是我的课程。
public class GenericList<T> where T : new()
{
private Node head;
// constructor
public GenericList()
{
head = null;
}
}
当我用整数创建对象时,它工作正常
GenericList<int> list = new GenericList<int>();
但是当我尝试使用字符串时,它给了我以下编译时错误。
GenericList<string> list1 = new GenericList<string>();
为了在通用类型或方法“ GenericTest.GenericList”中将其用作参数“ T”,“ string”必须是具有公共无参数构造函数的非抽象类型,当我像其他自定义类一样传递引用参数时,它也可以正常工作。
字符串有什么问题?
字符串类没有公共的无参数构造函数 ..这就是为什么new()
约束不适用于它。
其中T:new()
类型参数必须具有公共的无参数构造函数。 与其他约束一起使用时,必须最后指定new()约束。
String
类型具有公共的无参数构造函数是没有意义的,因为String
是不可变的 ,这意味着如果String
具有此构造函数,则它将必须创建一个空的字符串对象,而这只是愚蠢的,因为在创建后您无法更改它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.