【发布时间】:2009-12-03 13:03:55
【问题描述】:
我正在编写一个通用类,如下所示。
public class Foo<T> :
where T : Bar, new()
{
public void MethodInFoo()
{
T _t = new T();
}
}
如您所见,类型 T 的对象 _t 在运行时被实例化。为了支持泛型类型 T 的实例化,该语言强制我将 new() 放入类签名中。如果 Bar 是一个抽象类,我会同意这一点,但如果 Bar 标准非抽象类具有公共无参数构造函数,为什么需要如此。
如果未找到 new(),编译器会提示以下消息。
无法创建变量类型“T”的实例,因为它没有 new() 约束
【问题讨论】:
-
感谢大家的回答。答案的内容非常适合在问题主题上进行头脑风暴。