繁体   English   中英

C# params 关键字和 function 重载

[英]C# params keyword and function overloading

在 .net 框架中,我经常看到如下重载函数,

  1. public void Log(string message) ...
  2. 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++ ) 方法所花费的毫秒数:

  • 2472 毫秒params
  • 7773 毫秒,带params

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM