如何在Program.cs中引用并初始化泛型类Classname<T>?
泛型类实例化问题解决
你声明的是泛型类,必须指定符合约束的具体类型参数才能完成实例化,直接写Classname name = new Classname();会报错,因为编译器不知道泛型参数T对应的具体类型。
具体实现步骤:
- 首先确保存在一个实现了
Interface且包含无参构造函数的具体类,比如:public class ConcreteClass : Interface { // 满足new()约束的无参构造函数 public ConcreteClass() { } // 实现Interface中的成员 // ... } - 在Main方法中,通过指定具体类型参数来实例化泛型类:
static void Main(string[] args) { Classname<ConcreteClass> name = new Classname<ConcreteClass>(); }
关键说明:
泛型类的定义中where T : Interface, new()是约束条件,要求T必须实现Interface接口,并且拥有无参构造函数。实例化时必须传入符合该约束的具体类型,编译器才能基于这个类型生成对应的泛型类实例。
内容的提问来源于stack exchange,提问作者awthz Zei
相关产品推荐
相关产品推荐

