有人可以在下面的代码中解释使用new关键字吗?
public class TableList<T> : ObservableCollection<T> where T : ITable, new()
答案 0 :(得分:3)
答案 1 :(得分:3)
这是一个泛型的事情。这意味着用于替换T的任何类都必须具有不带参数的构造函数。
即。用你的例子,如果你写
var list = new TableList<Foo>();
Foo必须有一个默认的构造函数,否则它不会编译。
这样做的原因是它允许TableList类的作者说
var item = new T();
并且编译器可以将其(特别是TableList&lt; Foo&gt;)转换为
var item = new Foo();
不用担心Foo可能无法通过默认构造函数实例化。