我搜索了一下generic type in C#,得出了这样的结论:
Classstruct- No inheritance in struct
- The struct can not contain an empty constructor(without arguments)
所以我需要知道:
为什么使用第二种形式?为什么我们不直接用第一个?
谢谢,
发布于 2015-05-07 19:53:54
您所描述的是泛型约束。
其中T:New() ==>泛型参数必须是类+有一个默认的空构造函数
不,这只是说“类型参数必须有一个无参数的构造函数”。它实际上包括所有的值类型。即使您无法在C# 6之前为结构声明自己的无参数构造函数,但始终可以调用它们。例如:
Guid guid = new Guid();所以如果你有:
public void Foo<T>() where T : new()打电话是完全有效的
Foo<Guid>();发布于 2015-05-07 19:53:43
泛型约束new()意味着该类型具有一个无参数构造函数。该类型可以是结构类型,也可以是类。structs不能提供自定义的无参数构造函数,这是因为所有结构都有一个已经为它们提供的无参数构造函数,其默认行为是它们无法更改的。这并不意味着不能用无参数构造函数来创建结构。
发布于 2015-05-07 20:10:23
结构不能包含空构造函数(没有参数)。
不是这样的。结构将总是有一个无参数的构造函数。但是,不允许从自动获得的默认无参数构造函数中更改它。
https://stackoverflow.com/questions/30110417
复制相似问题