代码之家  ›  专栏  ›  技术社区  ›  JoshVarga

协方差和反方差[重复]

  •  1
  • JoshVarga  · 技术社区  · 16 年前

    可能重复:
    Covariance and contravariance real world example
    still confused about covariance and contravariance & in/out

    你能给我一个协方差和反方差的描述或例子吗?为什么他们现在决定把它添加到.NET 4中?

    2 回复  |  直到 16 年前
        1
  •  0
  •   Tormod    16 年前

    如果b继承自a,ie是a的子类型,那么c函数是协变的,如果c(b)是c(a)的子类型,那么c函数是协变的,如果c(a)是c(b)的子类型,那么c函数是协变的。

    问题是你是否希望消费者去处理超类型或子类型。

    一个常见的例子是一个处理水果类的类库。

    我可以给你一个你想要水果的苹果。 我不能给你任何你想要苹果的水果。

    如果你在做水果图书馆。你应该期待我的果实,我也应该期待你的果实。我们都不应该对可能是错误的子类型抱有期望。

    因此,以上问题的答案取决于你是得到还是发送。参数是读还是写。 水果清单应该是 接受 香蕉或苹果,但只有 发送 “水果”

        2
  •  0
  •   JoshVarga    16 年前

    由于没有答案,我只是总结一下评论。

    stackoverflow.com/questions/245607/_“mainma

    stackoverflow.com/问题/2662369/ stackoverflow.com/questions/1163465/ stackoverflow.com/questions/3445631/_“在清醒的56分钟前

    推荐文章