开发者

C# params keyword and function overloading

In .net framework I constantly see overloaded functions like the following,

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

my question is since the params keyword allows zero or more parameters, could we just get rid of the first signature? With just the second signature, I could call it with no parameters fine like below, so I don't know why they would have the first 开发者_运维百科signature?

Log("calling with no param");


Another reason is params is slow, thinking that all parameters are collected and an array is built. So the second one is slower.

public static string Format(string format, object arg0);
public static string Format(string format, params object[] args);


This pattern is typically used if the array-less version has a simpler implementation.


There is a small speed advantage as well.

Milliseconds taken for 1 billion iterations of calling a very simple (count++) method with each:

  • 2472 ms w/o params
  • 7773 ms w/ params
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜