zoukankan      html  css  js  c++  java
  • 泛型-泛型约束-逆变协变

    泛型来源

    没有泛型的时候。大家要写很多方法相同的方法,就是参数不一样。后面大家想了一个方法用Object类型作为参数。

    随着.net 和编译器的升级

    出现了泛型

    1类型安全    。类型是明确指定的,不会出现类型转化的问题。 将运行时的错误转换到了编译时期

    2减少拆箱装箱。   上面说的   参数用Object类型, 这样就要进行一次装箱拆箱。   性能对比  原生方法>泛型方法>Object参数方法

    3方法复用

    泛型原理

    泛型编译完之后变成具体的类型,就是产生了很多对应的类,对应的方法。

    泛型约束

    指定泛型类型继承某个类 或者接口,有构造函数 只能是无参数的。

    适用范围

    协变逆变在接口泛型和委托泛型中而言

    协变

    把子类赋值给父类。OUT只能修饰输出参数。

    IEnumerable<Para> lp = new List<Chid>();
    IMyCustomList<Para> c = new MyCustomList<Chid>();

    逆变

    把父类赋值给子类。IN只能修饰输入参数。

    IMyCustomList<Chid> c = new MyCustomList<Para>();

    面向对象中任何父类都可以用子类表示,就是把子类赋值给父类。但是不能把父类赋值给子类。

     源码下载

  • 相关阅读:
    莫队
    NOIP2010_T4_引水入城 bfs+贪心
    拉灯游戏 搜索
    种花小游戏 随机化搜索
    [usaco2003feb]impster
    P1265 公路修建 (prim)
    P3378 【模板】堆
    并查集 模板
    P2661 信息传递
    P1828 香甜的黄油 Sweet Butter (spfa)
  • 原文地址:https://www.cnblogs.com/wudequn/p/6721676.html
Copyright © 2011-2022 走看看