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

协变与逆变

c#
  •  3
  • TalentTuner  · 技术社区  · 14 年前

    也许我的问题是愚蠢的,但在这里。

    协方差和反方差是否只适用于C中的委托?

    在正常的类层次结构中,我们能有协方差和反方差吗?

    1 回复  |  直到 14 年前
        1
  •  8
  •   Marc Gravell    14 年前

    协方差和反方差是否只适用于C中的委托?

    不完全正确;语言水平的差异也适用于 接口 例如, IEnumerable<out T> (同样地 in 也很好)。

    我还应该注意到,引用类型的数组也是协变的:

    string[] orig = {"abc","def"};
    object[] sameArray = orig;
    

    在正常的类层次结构中,我们能有协方差和反方差吗?

    不;它不适用于类/结构(尽管您当然可以实现协变接口,并强制该接口)。