协变和逆变能够实现数组类型、委托类型和泛型类型参数的隐式引用转换。
协变将派生高的类型隐式转换为派生低的类型,如string转为object,
逆变相反。
可以使用 out
关键字将泛型类型参数声明为协变。 协变类型必须满足以下条件:
- 类型仅用作接口方法的返回类型,不用作方法参数的类型。
- 类型不用作接口方法的泛型约束。
可以使用 in
关键字将泛型类型参数声明为逆变。
官方文档地址:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/covariance-contravariance/creating-variant-generic-interfaces