.net 中逆变和协方差的实际使用

Real world use of Contravariance and Covariance in .net

我想知道我们使用 逆变和协方差 和 program.I 的真实场景看到了各种博客,但我仍然很困惑在哪里可以实现。

你写过foreach吗?如果你有那么你已经使用了 Covariance 所以这就是现实世界的用法。您可以在任何实现 IEnumerable 的类型上使用 foreach。这是 IEnumerable 的签名:

public interface IEnumerable<out T> : IEnumerable
                             ^^
                             ||
                    // See the above out keyword

out 关键字用于 协方差 ,因此它仅适用于 return 类型。

你用过IComparable接口,那你用过逆变。这是签名:

public interface IComparer<in T>
                           ^^
                           ||
                   // See the above in keyword

in关键字用于逆变,因此它仅适用于接口成员的参数类型。

如果缺少 outin 关键字,则它适用于输入参数和 return 参数。那叫invariance.