在 C# 4.0 出来之前,我对协变和逆变非常兴奋。它迎合了我对理论正确性的喜爱!
然而,现在它已经发布了,我又开始编写普通的、日常的、无聊的代码,我开始怀疑:我曾经使用过它吗?我注意到我没有有意识地使用它。从那以后,我定义的所有接口或委托都没有从中受益。
只有一个案例我后来发现我无意中使用了协方差,但它非常微妙,我也可能没有注意到它。ImagineX
是一个基类并且Y
是它的后代:
if (enumerableOfYs.Contains(variableOfTypeX))
有没有任何有趣或令人兴奋的例子,你们中的任何人在现实生活中使用协变或逆变,非人为的用例,并且通过惊人的“正确”真正拯救了一天?