协变与逆变

在编程语言中,“协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型。 “逆变”则是指能够使用派生程度更小的类型。

在 .NET Framework 4 和 Visual Studio 2010 中,C# 和 Visual Basic 都支持在泛型接口和委托中使用协变和逆变,并允许隐式转换泛型类型参数。

如果泛型接口或委托的泛型参数声明为协变或逆变,则将该泛型接口或委托称为“变体”。 C# 和 Visual Basic 都允许您创建自己的变体接口和委托。

在匹配方法签名和委托类型方面,非泛型委托也支持协变和逆变。 这样,您不仅可以为委托指派具有匹配签名的方法,而且可以指派这样的方法:它们返回与委托类型指定的派生类型相比,派生程度更大的类型(协变),或者接受相比之下,派生程度更小的类型的参数(逆变)。

标题

说明

泛型接口中的变体(C# 和 Visual Basic)

讨论泛型接口中的协变和逆变,提供 .NET Framework 中的变体泛型接口列表。

创建变体泛型接口(C# 和 Visual Basic)

演示如何创建自定义变体接口。

在泛型集合的接口中使用变体(C# 和 Visual Basic)

演示 IEnumerable<T> 接口和 IComparable<T> 接口中的协变和逆变支持如何帮助您重用代码。

委托中的变体(C# 和 Visual Basic)

讨论泛型委托和非泛型委托中的协变和逆变,提供 .NET Framework 中的变体泛型委托列表。

在委托中使用变体(C# 和 Visual Basic)

演示如何使用非泛型委托中的协变和逆变支持来匹配方法签名和委托类型。

对 Func 和 Action 泛型委托使用变体(C# 和 Visual Basic)

演示 Func 委托和 Action 委托中的协变和逆变支持如何帮助您重用代码。

原文地址:https://www.cnblogs.com/yellowsail/p/1951468.html