在C#类中实例化泛型类型

fad*_*ini 8 c# generics instantiation

C#中非常基本的问题,

class Data<T>
 {
    T obj;

    public Data()
    {
      // Allocate to obj from T here
      // Some Activator.CreateInstance() method ?
      obj =  ???
    }
 }
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

Sta*_* R. 20

如果要创建自己的T实例,则需要定义约束 new()

class Data<T> where T: new()
 {
    T obj;

    public Data()
    {
      obj =  new T();
    }
 }
Run Code Online (Sandbox Code Playgroud)

如果你想传入obj,那么你需要在构造函数中允许它

 class Data<T>
     {
        T obj;

        public Data(T val)
        {
          obj = val;
        }
     }
Run Code Online (Sandbox Code Playgroud)