[英]Method overloading in C# behaving unexpectedly when using params keyword
[英]C# params keyword and function overloading
在 .net 框架中,我经常看到如下重载函数,
public void Log(string message)
...public void Log(string message, params object[] args)
...我的问题是由于 params 关键字允许零个或多个参数,我们可以摆脱第一个签名吗? 只有第二个签名,我可以像下面这样没有参数的情况下调用它,所以我不知道他们为什么会有第一个签名?
Log("calling with no param");
另一个原因是params
很慢,认为所有参数都被收集并构建了一个数组。 所以第二个比较慢。
public static string Format(string format, object arg0);
public static string Format(string format, params object[] args);
如果无数组版本具有更简单的实现,则通常使用此模式。
还有一点速度优势。
10 亿次迭代调用一个非常简单的 ( count++
) 方法所花费的毫秒数:
params
params
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.