如何在泛型类型的构造函数中分配泛型类型的成员?

ief*_*fpw 1 c# generics

如何在泛型C#类中分配值?

public class GeneralWrapper<T>
{
    public GeneralWrapper()
    {
       Datas = new ?
    }

    public T Datas { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在为List对象(任何对象)编写通用的包装类.所以我可以像这样使用这个类

GeneralWrapper<List<string>> _wrapper = new GeneralWrapper<List<string>>();
_wrapper.Datas.Add("hello")
Run Code Online (Sandbox Code Playgroud)

但是Datas需要在构造函数中自动初始化

Datas = new Datas<t>();
Run Code Online (Sandbox Code Playgroud)

看来我在创建GeneralWrapper类之后不必创建新的.

Dar*_*rov 5

您可以对泛型类型使用约束:

public class GeneralWrapper<T> where T: new()
{
    public GeneralWrapper()
    {
       Datas = new T();
    }

    public T Datas { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

new()约束指示T必须是拥有一种默认参数的构造函数类型.这在编译时验证,允许您从泛型类中实例化此对象.