C#基础——params可变长参数使用优化

C#基础——params可变长参数使用优化

params是C#提供的一种语法糖,等价于传入一个数组。例如:

//一个接受变长参数的方法
void Function(params int[] n){
     }
//如下调用时
Function(1,2,3);
//等价于 传入临时数组 会造成堆内存的分配
Function(new int[]{
     1,2,3});
//一种特殊情况 如果不传参数
Function();
//等价于传入一个C#定义好的空数组 不会有堆内存的分配
Function(Array.Empty<int>);

所以使用了params定义的方法只要传参就会引发堆内存的分配,如果大量调用会造成内存的不必要开销。
参照C# string.Format的实现,可用多个参数数量不同的重载方法进行优化,如下:

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

三个参数已经能够满足我们开发中大部分时候的需求,这样就不会频繁生成新数组,造成堆内存的频繁分配了。

你可能感兴趣的:(C#基础,c#)