在.net框架中,我经常看到如下所示的重载函数,
public void Log(string message)
... public void Log(string message, params object[] args)
... 我的问题是,因为params关键字允许零个或多个参数,我们可以摆脱第一个签名吗?只有第二个签名,我可以用下面没有参数的方式调用它,所以我不知道他们为什么会有第一个签名?
Log("calling with no param");
答案 0 :(得分:6)
另一个原因是params
很慢,认为收集了所有参数并构建了一个数组。所以第二个更慢。
public static string Format(string format, object arg0);
public static string Format(string format, params object[] args);
答案 1 :(得分:2)
如果无数组版本的实现更简单,通常会使用此模式。
答案 2 :(得分:2)
速度优势也很小。
每次调用一个非常简单的(count++
)方法进行10亿次迭代所花费的毫秒数:
params
params