如何在c#中为泛型类型创建实例

时间:2010-03-15 05:26:24

标签: c# generics

我需要在C#中为通用类创建一个无参数实例。

如何做到这一点。

1 个答案:

答案 0 :(得分:21)

您可以添加: 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));