C#重载分辨率?

nor*_*ger 7 c#

在文章Anders Hejsberg的采访中,"我们在C#中进行重载解析的方式与其他语言不同"有人可以用C#和Java提供一些例子吗?

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/

  • 如果在问题中提到你的名字,你会得到分页,以确保无论何时何时都能得到答案;)? (2认同)