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

时间:2010-01-07 23:00:39

标签: c# generics instantiation

C#中的基本问题,

class Data<T>
 {
    T obj;

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

我该怎么做?

3 个答案:

答案 0 :(得分:20)

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

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

    public Data()
    {
      obj =  new T();
    }
 }

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

 class Data<T>
     {
        T obj;

        public Data(T val)
        {
          obj = val;
        }
     }

答案 1 :(得分:0)

您可以在泛型类定义中使用new constraint来确保T具有您可以调用的默认构造函数。约束允许您通知编译器有关泛型参数T必须遵守的某些行为(功能)。

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

    public Data()
    {
        obj = new T();
    }
}

答案 2 :(得分:0)