方法:使用一个参数和单个字符串的params字符串数组

4
这是来自另一个问题的内容:(如何在C#中构建具有未指定参数数量的方法 )。但由于这是一个不同的问题,我必须在这里提问。
假设您有一个重载方法(编译器允许此重载):
private static string AddURISlash(params string[] remotePaths) //multiple strings
private static string AddURISlash(string remotePaths) //single string

当只接收到一个参数时,如何知道将执行哪个方法?

是否有约定?或者你必须进行一次测试吗? 我是否必须假定由于执行单个字符串方法的唯一方法是接收单个字符串,因此这是不容置疑的唯一执行方法?

谢谢


为什么要有第二个选项?除非语义不同,但在这种情况下最好给它们起不同的名称。 - leppie
1个回答

8
当只有一个参数时,你怎么知道哪个参数将被执行?
你需要阅读规范,了解重载决定的处理方式。从7.5.3.2节中,相关的项目是:
否则,如果M_P在其正常形式下可用,而M_Q具有一个参数数组并且仅在其扩展形式下可用,则M_P优于M_Q。
因此,在编译时,选择不需要参数数组扩展(即单个字符串版本),而不是参数数组版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接