我有以下的C#测试代码:
在C#中,是否可以创建具有非无参构造函数的泛型类型的对象?在C++模板中做这样的事情不成问题,所以我很好奇为什么在C#中我不能做同样的事情。可能需要额外的“where”或语法不同吗?
class MyItem
{
MyItem( int a ) {}
}
class MyContainer< T >
where T : MyItem, new()
{
public void CreateItem()
{
T oItem = new T( 10 );
}
}
Visual Studio 无法编译它,在使用 'new' 的那一行出现了错误:
'T': cannot provide arguments when creating an instance of a variable type
在C#中,是否可以创建具有非无参构造函数的泛型类型的对象?在C++模板中做这样的事情不成问题,所以我很好奇为什么在C#中我不能做同样的事情。可能需要额外的“where”或语法不同吗?
new()
约束转换为Activator.CreateInstance()
调用。 - Steve Guidi