方法:使用一个参数和单个字符串params string []

时间:2012-02-28 19:38:03

标签: c# compiler-construction

这来自另一个问题: (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

如果只收到一个参数,你怎么知道会执行哪个?

有会议吗?或者你需要测试一次的东西? 我是否必须假设,因为要执行单字符串方法的唯一方法是接收单个字符串,那就是明确执行的那个?

由于

1 个答案:

答案 0 :(得分:8)

  

如果只收到一个参数,你怎么知道会执行哪个?

您阅读了规范,该规范解释了如何处理重载决策。从7.5.3.2节开始,相关的要点是:

  

否则,如果M P 以其正常形式适用且M Q 具有params数组且仅适用于其展开形式,则M P 优于M Q

因此的版本需要参数数组扩展(您的单字符串版本)是在编译时选择的,而不是参数数组版本。