C#params关键字和函数重载

本文关键字:重载 函数 关键字 C#params | 更新日期: 2023-09-27 18:05:26

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

  1. public void Log(string message)
  2. public void Log(string message, params object[] args)

我的问题是,既然params关键字允许零个或多个参数,我们可以去掉第一个签名吗?如果只有第二个签名,我可以像下面这样在没有参数的情况下调用它,所以我不知道他们为什么会有第一个签名?

Log("calling with no param");

C#params关键字和函数重载

另一个原因是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