2012-02-28 62 views
4

这来自该另一问题: (How to build a method with unspecified amount of params en C#)。 但因为它是一个不同的问题,我不得不在这里问吧方法:PARAMS串[]带有一个参数和单串

假设你有一个方法重载(此重载是由编译器允许):

private static string AddURISlash(params string[] remotePaths) //multiple strings 
private static string AddURISlash(string remotePaths) //single string 

你怎么知道这将只有当执行一个参数是否已收到?

有没有约定?或者你必须测试一次? 我是否必须假设,由于单个字符串要执行的方法的唯一方法是以接收单个字符串,那是明确执行的那个?

感谢

+0

为什么甚至有第二个选择?除非语义不同,否则在这种情况下,最好将它们命名为不同的名称。 – leppie 2012-02-28 19:42:53

回答

8

如何,你应该知道,当只有一个参数,收到将被执行?

您阅读说明书,这也解释了重载决策是如何处理的。从节7.5.3.2中,相关项目符号点是:

否则,如果M P是适用在其正常形式和M Q具有参数数组和仅在其膨胀形式是适用的,则中号 P小于M Q更好。

因此,这要求参数阵列扩展(您的单个串版本)的版本被选择在编译时间而不是参数数组版本。

相关问题