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

csh*_*olk 5 c# language-design

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

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

但我们可以使用new()约束来强制执行T具有公共参数的构造函数,然后我们就可以创建T使用new T()表达式的新实例.

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

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

Fra*_*yce 5

根据github上的这个特性请求链接,原因是CLR不提供C#需要实现它的信息.

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