相关疑难解决方法(0)

将参数传递给模板化类型的C#generic new()

我正在尝试在添加到列表时通过其构造函数创建类型为T的新对象.

我收到编译错误:错误消息是:

'T':创建变量实例时无法提供参数

但我的类确实有一个构造函数参数!我怎样才能做到这一点?

public static string GetAllItems<T>(...) where T : new()
{
   ...
   List<T> tabListItems = new List<T>();
   foreach (ListItem listItem in listCollection) 
   {
       tabListItems.Add(new T(listItem)); // error here.
   } 
   ...
}
Run Code Online (Sandbox Code Playgroud)

.net c# generics new-operator

395
推荐指数
10
解决办法
19万
查看次数

Activator.CreateInstance <T>对新的

以下两种创建对象的方法有什么区别吗?

Student s1 = Activator.CreateInstance<Student>();
Student s1 = new Student();
Run Code Online (Sandbox Code Playgroud)
  • 调用构造函数或初始化内存的方式有什么不同吗?
  • 根据我的理解,第一种方法看起来完全是多余的.如果程序员在设计时知道数据类型,他将使用第二种方法.

.net reflection

27
推荐指数
4
解决办法
1万
查看次数

给定"where T:new()","new T()"在内部使用Activator.CreateInstance吗?

如果我有一个类型参数约束new():

void Foo<T>() where T : new()
{
    var t = new T();
}
Run Code Online (Sandbox Code Playgroud)

new T()内部使用该Activator.CreateInstance方法(即反射)是真的吗?

c# generics reflection activator type-constraints

14
推荐指数
1
解决办法
793
查看次数