繁体   English   中英

通用类和约束

[英]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()约束不适用于它。

阅读关于类型参数的约束(《 C#编程指南》)

其中T:new()

类型参数必须具有公共的无参数构造函数。 与其他约束一起使用时,必须最后指定new()约束。

String类型具有公共的无参数构造函数是没有意义的,因为String不可变的 ,这意味着如果String具有此构造函数,则它将必须创建一个空的字符串对象,而这只是愚蠢的,因为在创建后您无法更改它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM