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