可能重复:
What does new() mean?
喜欢标题。我想知道代码中的这种语法是什么意思。我在一些样本中找到了它,但没有解释,我真的不知道它是做什么的。
public class SomeClass<T> where T: new() // what does it mean?
任何人都可以为我解释一下吗?
答案 0 :(得分:6)
也许你的意思是你在这些方面看到了什么?
public class SomeClass<T> where T: new()
{...}
这意味着您只能使用具有公共无参数构造函数的类型T的泛型类。这些被称为generic type constraints。即,你不能这样做(见CS0310):
// causes CS0310 because XmlWriter cannot be instantiated with paraless ctor
var someClass = new SomeClass<XmlWriter>();
// causes same compile error for same reason
var someClass = new SomeClass<string>();
为什么你需要这样的约束?假设您要实例化T
类型的新变量。只有在有此约束时才能执行此操作,否则,编译器无法事先知道实例化是否有效。即:
public class SomeClass<T> where T: new()
{
public static T CreateNewT()
{
// you can only write "new T()" when you also have "where T: new()"
return new T();
}
}
答案 1 :(得分:3)
答案 2 :(得分:1)
你没有发布完整的代码行,因为它不会编译,但它是泛型的约束。 Here是MSDN文章。