首页 > 其他 > 详细

泛型中的协变和逆变

时间:2014-10-11 21:34:57      阅读:338      评论:0      收藏:0      [点我收藏+]

泛型中的协变和逆变

  协变指能够使用比原始指定的派生类型的派生程度更大的类型,逆变指能够使用比原始指定的派生类型的派生程度更小的类型。

  协变与逆变的本质就是参数的替换。逻辑不变,只进行参数的替换,以实现更高程序的复用。 

  通常,协变类型参数可用作委托的返回类型,而逆变类型参数可用作参数类型。 对于接口,协变类型参数可用作接口的方法的返回类型,而逆变类型参数可用作接口的方法的参数类型。

  bubuko.com,布布扣

  协变是out,逆变是in。

  协变的例子:

  bubuko.com,布布扣

  逆变的例子,When the delegate of type Action<Base> is invoked as if it were a delegate of type Action<Derived>, its argument must be of type Derived:

  bubuko.com,布布扣

注意要点

  • 在 .NET Framework 4中,Variant 类型参数仅限于泛型接口和泛型委托类型。

  • 泛型接口或泛型委托类型可以同时具有协变和逆变类型参数。
  • 变体仅适用于引用类型;如果为 Variant 类型参数指定值类型,则该类型参数对于生成的构造类型是不变的。
  • 变体不适用于委托组合。

参考:http://msdn.microsoft.com/zh-cn/library/dd799517(v=vs.110).aspx#DelegateVariantTypeParameters

泛型中的协变和逆变

原文:http://www.cnblogs.com/tekkaman/p/4019774.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!