我需要为C#中的泛型类创建无参数实例。

这该怎么做。

最佳答案

您可以添加: new()约束:

void Foo<T>() where T : class, new() {
    T newT = new T();
    // do something shiny with newT
}


如果没有约束,则Activator.CreateInstance<T>可能会有所帮助(减去编译时检查):

void Foo<T>() {
    T newT = Activator.CreateInstance<T>();
    // do something shiny with newT
}


如果您是指类型本身,则可能类似于:

Type itemType = typeof(int);
IList list = (IList)Activator.CreateInstance(
         typeof(List<>).MakeGenericType(itemType));

10-04 18:14