众所周知,在当前版本的C#中,我们无法编写以下这样的代码:
public class A {
public static void Method<T> () where T : new(string, string) {
var x = new T("foo", "bar");
}
}
但我们可以使用new()
约束来强制要求T
具有公共的无参构造函数,然后我们就能够使用new T()
表达式创建T
的新实例。
在SO上有很多关于各种解决方法的答案,但它们中没有一个解释为什么语言设计者没有实现这样的特性。从SO上的问题数量来看,它似乎在现实世界的应用中会很有用。
为什么C#没有实现这个功能,有没有可能在下一个版本的语言中加入它?