如何向我的列表中添加泛型类型? 我尝试创建一个T类型的对象,但这也不起作用。
class Bar<T> where T : IDrink
{
List<T> storage = new List<T>();
public void CreateDrink()
{
storage.Add(T); //<- This doesn't work
}
}
T
是一种类型而不是该类型的实例。因此,您需要在CreateDrink
中添加一个参数或使用返回T
新实例的工厂方法。
如果您想创建一个实例,则泛型约束必须包括new()
。
class Bar<T> where T : IDrink, new()
{
List<T> storage = new List<T>();
public void CreateDrink()
{
storage.Add(new T());
}
}
storage.Add(Activator.CreateInstance<T>());
storage.Add(default(T));
- rt2800default(T)
不会创建T
的实例,它将为引用类型提供null
,对于值类型则提供默认值。 - Steve Lillis