【发布时间】:2018-08-16 22:57:57
【问题描述】:
我正在尝试创建一个具有 T 属性的类列表:
class Test<T> where T : IClass, new()
{
public T Actor { get { return new T(); } }
public eEnum { get; set; }
public String Str { get; set; }
}
以上是一个示例类,如何创建以上类的列表?
我已经尝试了以下但无济于事:
List<Test<IClass>> list = new List<IClass>();
有没有办法像我试图生成的那样创建一个列表?
【问题讨论】:
-
你不应该做
List<Test<IClass>> list = new List<Test<IClass>>();吗? -
是的,您需要让右侧的初始化程序与左侧的变量类型匹配。尽管我确实想知道,您在类型参数约束中拥有的
new()看起来您需要一个新的IClass实例,但您实际上只需要该类型。由于您的Actor正在处理更新,我建议删除new()约束。 -
@TurnerBass
new()constraint 指定类型T必须有一个公共的无参数构造函数(这使得Actor方法能够调用new T()) -
是的,没错。但列表初始化仍然是主要问题
-
@TurnerBass 如果 OP 删除了
new()约束,该类将不再编译。