在C#4.0问世之前,我对协方差和逆变感到非常兴奋.它迎合了我对理论正确性的喜爱!
然而,既然已经出局了,我又回到了写正常,日常,无聊的代码,我开始怀疑:我曾经使用它吗?我注意到我并没有有意识地使用它.我之后定义的接口或代理都没有从中受益.
只有一个案例我后来发现我不知不觉地使用了协方差,但它非常微妙,我也没有注意到它.想象X是一个基类,Y是它的后代:
if (enumerableOfYs.Contains(variableOfTypeX))
有没有任何有趣或令人兴奋的例子,你们中的任何一个人在现实生活中,非人为的用例中使用了协方差或逆变,它真的通过非常“正确”来挽救了这一天?
我在实际的客户编写程序(而不是编写编译器测试用例或
文章或其他任何东西)中遇到的唯一“真实世界”方差的使用是我现在可以传递IEnumerable< TypeParameterDefinedInSource>一个期望IEnumerable< TypeSymbol>的
方法当我用C#编写
代码分析工具时.
这真的不是一种“拯救一天”的功能.它更像是“它按照我期望的方式工作”功能.