如何轻松看懂C语言编程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计981个文字,预计阅读时间需要4分钟。
1.+ 基本概念+官方:协变和逆变都是术语,前者指派生类型比原始类型更具体(更全面),后者则相反(不够全面)。
1. 基本概念
官方:协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型。[MSDN]
公式:
协变:IFoo<父类> = IFoo<子类>;
逆变:IBar<子类> = IBar<父类>;
暂时不理解没关系,您接着往下看。
2. 协变(Covariance)
1) out关键字
对于泛型类型参数,out 关键字可指定类型参数是协变的。 可以在泛型接口和委托中使用 out 关键字。[MSDN]
2) 鲁迅:一张图胜过千言万语(图小看不清,单机鼠标右键 -> 在新标签页中打开图片)
备注:泛型委托的协变原理也是一样的。
3) 什么是协变?
协变就是对具体成员的输出参数进行一次类型转换,且类型转换的准则是 “里氏替换原则”。
3. 逆变(Contravariance)
1) in关键字
对于泛型类型参数,in 关键字可指定类型参数是逆变的。 可以在泛型接口和委托中使用 in 关键字。
本文共计981个文字,预计阅读时间需要4分钟。
1.+ 基本概念+官方:协变和逆变都是术语,前者指派生类型比原始类型更具体(更全面),后者则相反(不够全面)。
1. 基本概念
官方:协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型。[MSDN]
公式:
协变:IFoo<父类> = IFoo<子类>;
逆变:IBar<子类> = IBar<父类>;
暂时不理解没关系,您接着往下看。
2. 协变(Covariance)
1) out关键字
对于泛型类型参数,out 关键字可指定类型参数是协变的。 可以在泛型接口和委托中使用 out 关键字。[MSDN]
2) 鲁迅:一张图胜过千言万语(图小看不清,单机鼠标右键 -> 在新标签页中打开图片)
备注:泛型委托的协变原理也是一样的。
3) 什么是协变?
协变就是对具体成员的输出参数进行一次类型转换,且类型转换的准则是 “里氏替换原则”。
3. 逆变(Contravariance)
1) in关键字
对于泛型类型参数,in 关键字可指定类型参数是逆变的。 可以在泛型接口和委托中使用 in 关键字。

