首页 > 代码库 > 泛型中的协变和逆变
泛型中的协变和逆变
【泛型中的协变和逆变】
协变指能够使用比原始指定的派生类型的派生程度更大的类型,逆变指能够使用比原始指定的派生类型的派生程度更小的类型。
协变与逆变的本质就是参数的替换。逻辑不变,只进行参数的替换,以实现更高程序的复用。
通常,协变类型参数可用作委托的返回类型,而逆变类型参数可用作参数类型。 对于接口,协变类型参数可用作接口的方法的返回类型,而逆变类型参数可用作接口的方法的参数类型。
协变是out,逆变是in。
协变的例子:
逆变的例子,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:
【注意要点】
在 .NET Framework 4中,Variant 类型参数仅限于泛型接口和泛型委托类型。
- 泛型接口或泛型委托类型可以同时具有协变和逆变类型参数。
- 变体仅适用于引用类型;如果为 Variant 类型参数指定值类型,则该类型参数对于生成的构造类型是不变的。
- 变体不适用于委托组合。
参考:http://msdn.microsoft.com/zh-cn/library/dd799517(v=vs.110).aspx#DelegateVariantTypeParameters
泛型中的协变和逆变
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。