zoukankan      html  css  js  c++  java
  • c#4.0协变逆变的理解

    协变 对应返回类型。
    逆变 对应参数类型。

    第一点:不管是协变还是逆变,其实都是完全遵从类型兼容的,只是将一个本来应该默认实现的东西,改为显式的声明。这个是从调用者角度出发的观点,你可以把协变和逆变都认为是“理所当然”的。

    第二点,在理解的时候,需要把参考的对象固定为函数相对函数的兼容上。

     

    把父类看作更大的类型。

     从小到大 是协调的。

    从大到小 是反常的。

     举例:

     大 funA(小)。

     小 funB(大)。

     funA 包容 funB。因为所有用到funA的场合都能替换成funB,反之不成立。

     

    从函数兼容的角度(funB -> funA):

    返回类型是协调的。

    参数类型是反常的。

     

    从调用者角度,从来都是由小类型传到大类型的。

    四种调用场合:

    大 a = funB()

    funB(小)

    大 a = funA()

    funA(小)

     

    只属于funB的特定场合:

    小 a = funB()

    funB(大)

     

  • 相关阅读:
    购物英语词汇
    生活学习英语词汇
    银行英语词汇
    烹饪英语词汇
    旅游英语词汇
    饮食英语词汇
    书英语词汇
    王元编辑口语资料中国传统之节日
    DataSet在WCF中怎么办?
    Python生成Wav格式文件
  • 原文地址:https://www.cnblogs.com/Nobel/p/1935859.html
Copyright © 2011-2022 走看看