C# params keyword and function overloading
In .net framework I constantly see overloaded functions like the following,
public void Log(string message)
...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
精彩评论