C#params关键字和函数重载
本文关键字:重载 函数 关键字 C#params | 更新日期: 2023-09-27 18:05:26
在.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);
如果无阵列版本的实现更简单,则通常使用此模式。
还有一个小的速度优势。
调用一个非常简单的(count++
(方法的10亿次迭代所用的毫秒数:
- 2472毫秒,不带
params
- 7773毫秒w/
params