开发者

C# params keyword and function overloading

开发者 https://www.devze.com 2023-03-27 12:06 出处:网络
In .net framework I constantly see overloaded functions like the following, public void Log(string message)...

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

精彩评论

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