新实例的通用类型实现了什么?

Dan*_*ann 6 .net c# generics

我注意到有人在C#中做过这个 - 注意新的()

public class MyClass<T> where T: new(){

//etc

}
Run Code Online (Sandbox Code Playgroud)

这实现了什么?

Jar*_*Par 10

这会将泛型约束MyClass<T>为仅适用于T具有可用无参数构造函数的实例.这允许您在类型中安全地使用以下表达式

new T()
Run Code Online (Sandbox Code Playgroud)

如果没有new约束,则不允许这样做,因为CLR无法验证类型T是否具有适用的构造函数.