Eri*_*ert 18
Anders在这里得到的是,原始设计团队明确地设计了重载决策算法,使其具有与版本控制方案很好地兼作的某些属性,即使这些属性在您考虑没有版本控制的情况下看似倒退或混乱.
可能最常见的例子是C#中的规则,如果更多派生类上的任何方法是适用的候选者,它自动优于较少派生类上的任何方法,即使派生较少的方法具有更好的签名匹配.据我所知,在其他具有重载分辨率的语言中找不到此规则.这似乎违反直觉; 如果有一种方法是更好的签名匹配,为什么不选择它呢?原因是因为更好的签名匹配方法可能已在更高版本中添加,从而引入了"脆弱的基类"故障.
有关各种语言如何处理脆弱基类失败的更多想法,请参阅
http://blogs.msdn.com/b/ericlippert/archive/tags/brittle+base+classes/
关于重载决策的更多想法,请参阅
http://blogs.msdn.com/b/ericlippert/archive/tags/overload+resolution/