これに答えられるかもしれない人々がいると思います、これは好奇心からの質問です:
.NET v2で導入されたからのジェネリックCreateInstance
メソッドSystem.Activator
には、ジェネリック引数に型の制約はありませんが、アクティブ化された型にデフォルトのコンストラクターが必要です。そうでない場合は、MissingMethodException
がスローされます。私には、このメソッドには次のような型制約が必要であることは明らかです。
Activator.CreateInstance<T>() where T : new() {
...
}
ここに潜んでいる単なる省略またはいくつかの逸話?
アップデート
指摘したように、コンパイラはあなたが書くことを許可していません
private T Create<T>() where T : struct, new()
error CS0451: The 'new()' constraint cannot be used with the 'struct' constraint
ただし、コメントを参照してください。構造体は、new()制約を指定するジェネリックメソッドの型引数として使用できます。この状況下では、与えられた答えがメソッドを制約しない唯一の正当な理由のようです...
これを見てくれてありがとう!