您现在的位置是:首页 >

对泛型类型的参数限制 对C#泛型中的new()约束的一点思考

火烧 2021-08-29 01:56:52 1047
对C#泛型中的 ew 约束的一点思考   对于 ew 约束 大家可能有一个误解 以为使用了 ew约束之后 在创建对象时与非泛型的版本是一致的    u lic cla Te ter lt T gt w
对泛型类型的参数限制 对C#泛型中的new()约束的一点思考

对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  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码