c# - 结合 struct 和 new() 泛型类型约束

标签 c# generics c#-4.0

拥有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/

相关文章:

c# - 为什么可以在类中编写 dispose() 方法时使用 IDisposable

c# - 命名空间 'xxx' 中的子元素 'http://yyy' 无效,而实际上 xml 中没有额外的命名空间设置

c# - 在运行时创建类型 "MyClass : OtherClass<MyClass> { }"?

.net - .net 4.0 动态变量的内存是如何分配的?

c# - 将数据库连接字符串放在 .resx 文件中

c# - 是否有必要等待单个异步调用

c# - 系统 namespace 在全新安装时缺少 MonoDevelop

.net - ToPascalCase() C# for all caps 缩写

c# - 如何限制通用扩展的类型

java - 解决类型推断时对Exception的约束