以下のコードで new キーワードを使用する方法を誰か説明してもらえますか?
public class TableList<T> : ObservableCollection<T> where T : ITable, new()
以下のコードで new キーワードを使用する方法を誰か説明してもらえますか?
public class TableList<T> : ObservableCollection<T> where T : ITable, new()
ジェネリックの事です。これは、T を置き換えるために使用されるクラスには、引数のないコンストラクターが必要であることを意味します。
すなわち。あなたの例で、あなたが書くなら
var list = new TableList<Foo>();
Foo にはデフォルトのコンストラクターが必要です。そうしないと、コンパイルされません。
これを行う理由は、TableList クラスの作成者が次のように言うことができるようにするためです。
var item = new T();
コンパイラはそれを (特に TableList<Foo> の場合) を意味するように変換できます。
var item = new Foo();
Foo がデフォルトのコンストラクターを介してインスタンス化されない可能性があることを心配する必要はありません。