![](/img/trans.png)
[英]Benefits of having both specific arguments and params method overloads in C#
[英]Several overloads for method with “params” keyword
我已经看过Path.Combine
,发现它有四个重载:
string
, string
string
, string
, string
string
, string
, string
, string
params string[]
前三个重载如何有用?
我看到它的方式,第四次超载使其他人毫无意义。 我查看了源代码,我确实看到第四个重载的实现有点不同,但即使在这种情况下,我也希望只有一个params
重载,它根据数组的长度决定使用哪个实现。
根据这个答案https://stackoverflow.com/a/2796763/385844 ,这是为了避免创建参数数组的开销,并且因为非params重载对于不支持可变长度的语言的用户来说很方便参数列表。
也可以看看
就像Oded说的那样,我发现它必须存在向后兼容性,因为我在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)
Path.Combine可能就是这样,但毫无意义。
我只能说我与其他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参数的情况作为重载,因为这有点使得更难以不必要地混乱代码。 由于过载链接,调用稍微慢一点,但它有助于使代码更清晰。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.