繁体   English   中英

C#通用类<T>

[英]C# Generic Class<T>

如何将通用类型添加到我的列表中? 我试图创建一个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>()); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM