【发布时间】:2010-08-27 05:05:06
【问题描述】:
在 C# 4.0 出来之前,我对协变和逆变非常兴奋。它迎合了我对理论正确性的喜爱!
但是,现在它已经发布了,我又开始编写普通的、日常的、无聊的代码,我开始怀疑:我曾经使用过它吗?我注意到我没有有意识地使用它。从那以后我定义的接口或委托都没有从中受益。
只有一个单一的情况,我后来发现我无意中使用了协方差,但它非常微妙,我也可能没有注意到它。想象X 是一个基类,Y 是它的后代:
if (enumerableOfYs.Contains(variableOfTypeX))
有没有任何有趣或令人兴奋的例子,你们中的任何人在现实生活中使用协变或逆变,非人为的用例,并且通过惊人的“正确”真正拯救了一天?
【问题讨论】:
-
您的意思是除了
IEnumerable<T>、Func和IComparable<T>之类的东西,您可能每天都在不知不觉中使用它?
标签: c# covariance use-case contravariance