您现在的位置是:首页
>
对泛型类型的参数限制 对C#泛型中的new()约束的一点思考
对C#泛型中的 ew 约束的一点思考 对于 ew 约束 大家可能有一个误解 以为使用了 ew约束之后 在创建对象时与非泛型的版本是一致的 u lic cla Te ter lt T gt w

对C#泛型中的new()约束的一点思考
对于new()约束 大家可能有一个误解 以为使用了new约束之后 在创建对象时与非泛型的版本是一致的
public class Tester<T>where T:new(){public Tester(){t = new T();//等同于非泛型版本的new? 例如 object o = new object();?}
private T t;
}
事实上 使用new关键字的作用只是让编译器在泛型实例化之处 检查所绑定的泛型参数是否具有无参构造函数
Tester<SomeType> t = new Tester<SomeType>();//此处编译器会检查SomeType是否具有无参构造函数 若没有则会有pile error
而Tester<T>类的构造函数中的new代码 实际上等同于下面的代码
public class Tester<T>where T:new(){public Tester(){ t = System Activator CreateInstance<T>();}
private T t;
}
lishixinzhi/Article/program/net/201311/13556 很赞哦! (1047)