C#通用类<;T>;
如何将泛型类型添加到列表中? 我试图创建一个T的对象,但这也不起作用C#通用类<;T>;,c#,list,class,generics,add,C#,List,Class,Generics,Add,如何将泛型类型添加到列表中? 我试图创建一个T的对象,但这也不起作用 class Bar<T> where T : IDrink { List<T> storage = new List<T>(); public void CreateDrink() { storage.Add(T); //<- This doesn't work } } 类栏,其中T:IDrink { 列表存储=新列表(); 公共饮料
class Bar<T> where T : IDrink
{
List<T> storage = new List<T>();
public void CreateDrink()
{
storage.Add(T); //<- This doesn't work
}
}
类栏,其中T:IDrink
{
列表存储=新列表();
公共饮料
{
存储。添加(T);//您可以像这样执行:
storage.Add(Activator.CreateInstance<T>());
storage.Add(Activator.CreateInstance());
T
是一个类型,而不是该类型的实例。因此,您需要在CreateDrink
中使用一个参数,或者使用一个工厂方法返回T
的新实例
如果要创建实例,则泛型约束必须包括
类栏,其中T:IDrink,new()
{
列表存储=新列表();
公共饮料
{
添加(新的T());
}
}
新约束指定泛型类中的任何类型参数
声明必须具有公共无参数构造函数。若要使用
新约束,类型不能是抽象的
尝试storage.Add(default(T));
使用default(T)
不会创建T
的实例,它会为引用类型提供null
,为值类型提供默认值。
class Bar<T> where T : IDrink, new()
{
List<T> storage = new List<T>();
public void CreateDrink()
{
storage.Add(new T());
}
}