2
为什么在C#中有一个new()约束,但没有其他类似的约束?
在C#泛型中,我们可以说,使类型参数T具有默认构造函数的约束where T : new()。但是,没有其他像这样的约束有效(new(string)例如,等等)。 从语言设计和/或实现的角度来看,这是什么原因? 构造函数的工作方式或类型系统的实现方式是否有某些禁止(或至少使之更加困难)的东西?如果是这样,那是什么?我记得读书的地方,default(T)实际上编译到new T()了T : struct。可能与此有关吗? 还是仅仅是为了避免使语言过于复杂而做出的设计决定?