2
C#にnew()制約があるのに、他の同様の制約がないのはなぜですか?
C#ジェネリックでは、と言うことで、型パラメーターの制約を宣言Tしてデフォルトコンストラクターを持たせることができますwhere T : new()。ただし、このような他の種類の制約は有効ではありません- new(string)たとえば、など 言語設計および/または実装の観点から、この理由は何ですか? コンストラクタの動作方法や、これを禁止する(または少なくとも難しくする)型システムの実装方法に何かありますか?もしそうなら、それは何ですか?default(T)実際にコンパイルさnew T()れた場所を読んだことを思い出しT : structます。これと関係があるのでしょうか? それとも、言語が複雑になりすぎないようにするために、単に設計上の決定を下しただけですか?