C#中的基本问题,
class Data<T>
{
T obj;
public Data()
{
// Allocate to obj from T here
// Some Activator.CreateInstance() method ?
obj = ???
}
}
我该怎么做?
答案 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)