对带有"params"关键字

本文关键字:quot 关键字 params | 更新日期: 2023-09-27 17:49:28

我看了看Path.Combine,注意到它有四个过载:

  1. string, string
  2. string, string, string
  3. string, string, string, string
  4. params string[]

前三个重载是如何有用的?
在我看来,第四个过载使得其他过载变得毫无意义。我查看了源代码,我确实看到了第四个重载的实现有点不同,但即使在这种情况下,我也希望只有一个params重载,它根据数组的长度决定使用哪个实现。

对带有"params"关键字

根据这个答案https://stackoverflow.com/a/2796763/385844,这是为了避免创建参数数组的开销,并且因为非参数重载对于不支持变长参数列表的语言的用户来说很方便。

参见

为什么字符串。格式有几种形式?

就像Oded说的,我发现它一定是为了向后兼容而存在的,因为我在2.0,3.5中找不到它

  • 路径。结合2.0
  • 路径。结合3.5

我想重载是从4.0开始的

  • 路径。如果你看右边的导航栏,你会看到重载

至于其他许多重载,我不会为。net团队说话,但我觉得他们觉得每次增加重载是毫无意义的,所以他们停止在4,并为超过4个字符串组合提供一个字符串数组-我认为这是明智的

我基于Lambda表达式的解释,其中团队停止在16个参数

动作(T1、T2、T3、T4、T5、T6、T7、T8、T9、T10、T11、T12、T13、T14、T15、T16)

路径。

我只能从我与其他c#开发人员的经验来谈谈。

并不是所有的开发人员都熟悉或熟悉params语法(事实上,技术名称是可变函数参数并没有帮助)。我知道我必须一遍又一遍地解释,所以看到呼叫

是很正常的。
instance.ParamsMethod(new int[]{1});
//or even
instance.ParamsMethod(new List<int>{1}.ToArray());

对于写为:

的方法

public void ParamsMethod(params int[] source) {}

否定params的所有甜语法糖(然后是部分)。

因此,我个人倾向于提供1和2参数情况作为重载,因为这在某种程度上使不必要的代码混乱变得更加困难。由于重载链,调用稍微慢一些,但它有助于编写更清晰的代码。