C#params关键字和函数重载

Ray*_*Ray 5 c# parameters overloading

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

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

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

Log("calling with no param");
Run Code Online (Sandbox Code Playgroud)

Che*_*hen 6

另一个原因是params速度慢,认为收集了所有参数并构建了一个数组.所以第二个更慢.

public static string Format(string format, object arg0);
public static string Format(string format, params object[] args);
Run Code Online (Sandbox Code Playgroud)

  • @Bevan:我也从他的书中了解到这一点:) (2认同)