众所周知,我们不能在当前版本的C#中编写这样的代码:
public class A {
public static void Method<T> () where T : new(string, string) {
var x = new T("foo", "bar");
}
}
但我们可以使用new()
约束来强制T
具有公共参数构造函数,然后我们可以使用T
表达式创建new T()
的新实例
关于各种解决方法,有很多关于SO的答案,但没有解释为什么语言设计者没有实现这样的功能。从SO的问题数量来看,它似乎在阅读世界的应用程序中很有用。
为什么在C#中没有实现此功能,是否有可能在下一版本的语言中添加它?
答案 0 :(得分:5)
根据这个feature request link on github,原因是CLR没有提供C#实现它所需的信息。
有人猜测CLR可能会被修改,以便将来的C#版本(7.0?)支持此功能。