为什么 C# 中的泛型参数没有带参数的构造函数约束?

Why there is no constructor-with-parameters constrain on generic parameters in C#?

众所周知,我们不能在当前版本的 C# 中编写这样的代码:

public class A {
    public static void Method<T> () where T : new(string, string) {
        var x = new T("foo", "bar");
    }
}

但我们可以使用 new() 约束来强制 T 具有 public 无参数构造函数,然后我们可以使用 T 创建新实例new T()表达式。

SO 上有很多关于各种解决方法的答案,但没有一个能解释为什么语言设计者没有实现这样的功能。从关于 SO 的大量问题来看,它似乎在阅读世界应用程序中很有用。

为什么此功能未在 C# 中实现,是否有可能在下一版本的语言中添加?

根据这个feature request link on github,原因是 CLR 没有提供 C# 实现它所需的信息。

有人猜测可能会修改 CLR,以便未来的 C# 版本(7.0?)支持此功能。