这来自另一个问题: (How to build a method with unspecified amount of params en C#)。 但由于这是一个不同的问题,我不得不在这里问一下
假设您有一个方法重载(编译器允许此重载):
private static string AddURISlash(params string[] remotePaths) //multiple strings
private static string AddURISlash(string remotePaths) //single string
如果只收到一个参数,你怎么知道会执行哪个?
有会议吗?或者你需要测试一次的东西? 我是否必须假设,因为要执行单字符串方法的唯一方法是接收单个字符串,那就是明确执行的那个?
由于
答案 0 :(得分:8)
如果只收到一个参数,你怎么知道会执行哪个?
您阅读了规范,该规范解释了如何处理重载决策。从7.5.3.2节开始,相关的要点是:
否则,如果M P 以其正常形式适用且M Q 具有params数组且仅适用于其展开形式,则M P 优于M Q 。
因此不的版本需要参数数组扩展(您的单字符串版本)是在编译时选择的,而不是参数数组版本。