C#协变和逆变_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C#协变和逆变

C#协变和逆变

 2015/4/19 19:26:37  流年、落了誰  程序员俱乐部  我要评论(0)
  • 摘要:我们知道在C#中,是可以将派生类的实例赋值给基类对象的。这是没有什么问题的。下面我们做一些变动。协变Dog类不是继承Animal类么,为什么到这里就不能用了呢?原来我们都忽略了一点,在这段代码中dogMarker和animalMarker变量的类型分别是Factory<Dog>和Factory<Animal>他们是没有继承关系的,也就是他们是同级别的。因此我们把dogMarker赋值给animalMarker的时候编译器就报错了。那么我们如果希望上面的代码可以正常运行
  • 标签:C#

  我们知道在C#中,是可以将派生类的实例赋值给基类对象的。

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" alt="" />

  这是没有什么问题的。下面我们做一些变动。

协变

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" alt="" />

  Dog类不是继承Animal类么,为什么到这里就不能用了呢?

  原来我们都忽略了一点,在这段代码中dogMarker和animalMarker变量的类型分别是Factory<Dog>和Factory<Animal>他们是没有继承关系的,也就是他们是同级别的。因此我们把dogMarker赋值给animalMarker的时候编译器就报错了。那么我们如果希望上面的代码可以正常运行,那要怎么做呢?

  还记得在学习参数的时候有一个关键字么——out;如果类型参数只用作输出值的话,那么他适用于任何泛型委托。

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" alt="" />

  这种结构化的委托特效之间的关系就叫做协变。

逆变

同样先来看一段代码

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" alt="" />

  这次大家知道,报错肯定是类型不同当然不能赋值了,仔细看异常提示,要怎么实现“逆变”呢?其实只需要一个简单的关键字(in)就能解决了

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" alt="" />

这种在期望传入基类时允许传入派生类对象的特性就是逆变了。

小结

对于协变与逆变只适用于引用类型,因为值类型没法派生新的类型。

显式变化使用in和out关键字只适用于委托和接口,类、结构和方法都不适用。

上一篇: 如何用Java控制台玩2048【转】 下一篇: 没有下一篇了!
发表评论
用户名: 匿名