拥有recently有理由仔细阅读 Nullable 文档,我注意到 Nullable 的定义如下:
public struct Nullable<T> where T : struct, new()
我的(错误?)理解是结构总是有一个公共(public)的无参数构造函数,如果这是正确的,那么 new() 类型约束在此处添加了什么?
最佳答案
因为 struct new 没有意义。对于类(class),它确实如此。
在您的情况下,这是多余的。
public T FactoryCreateInstance<T>() where T : new()
{
return new T();
}
在上述情况下指定新约束是有意义的,但当它已经被约束为结构时就没有意义了。
值类型的无参数构造函数是 C# 限制而不是 CLI 限制。也许这就是为什么它被冗余指定,以便为 future 留出一些回旋余地。
关于c# - 结合 struct 和 new() 泛型类型约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190742/