我定义了一个泛型类(下面的例子),我需要在类中实例化一个T,但是却无法使用new T()。而用default(T)却只能得到null或0。应该怎么做。
public class MyClass<T> { public T Get() { T t = new T(); return t; }}
请如以下代码示例使用:
public class MyClass<T> where T : new(){ public T Get() { return new T(); }}
C# 编译器无法保证你的代码在引用类型时也能安全通过,因为有时候我们会在类中使用 private 修饰构造函数。所以需要一个显示的构造器约束。而值类型已经满足上述要求。
public class MyClass<T> where T : new()
增加泛型约束