C# 中 params 关键字实现方法形参个数可变详解
在C#编程中,当需要处理不定数量的参数时,可以使用params关键字。它允许方法接收可变数量的实参,简化了方法调用的灵活性。本文将结合具体代码示例,深入解析params的使用规则、多种调用方式以及性能注意事项。
params 基本用法与示例
通过 params 关键字修饰一维数组参数,可以让方法接受任意数量的同类型参数。以下是一个计算整数之和的典型示例:
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Sum(1));
Console.WriteLine(Sum(1, 2, 3));
Console.WriteLine(Sum(1, 2, 3, 4, 5));
Console.ReadKey();
}
private static int Sum(params int[] values)
{
int sum = 0;
foreach (int value in values)
sum += value;
return sum;
}
}
在上述代码中,Sum 方法通过 params int[] values 接收一组整数并返回它们的总和。调用时可以直接列举元素,非常便捷。
使用注意事项
在使用 params 时,需严格遵守以下规则:
- 仅限一维数组:
params只能用于一维数组,不能用于多维数组,也不能用于List<T>、ArrayList等集合类型。 - 位置限制:带有
params关键字的形参必须是形参列表中的最后一个,且一个方法声明中只允许出现一个params关键字。
三种调用形式
params 修饰的方法主要有以下三种调用方式:
第1步:列举数组元素(最常用)
目的:直接传递具体的数值,提高代码可读性。
动作:在调用时将各个元素作为单独的参数传入。
示例:Sum(1, 2, 3)
第2步:显式传入数组对象
目的:将已有的数组变量作为参数传递,兼容无 params 的传统写法。
动作:创建数组实例或引用现有数组变量进行传递。
示例:Sum(new int[]{1, 2, 3}) 或先定义 int[] n = new int[]{1, 2, 3}; Sum(n);
第3步:省略参数
目的:减少重载方法的定义数量,允许不传参。
动作:直接调用不带参数的方法名,如 Sum()。
结果:方法内部仍会创建一个长度为0的新数组,效率略低。若存在明确的重载方法(如 int Sum()),编译器会优先调用该重载版本。
第4步:显式传入 null
目的:在不需要传递任何数据且希望避免创建空数组开销时使用。
动作:Sum((int[])null)。
优势:相比省略调用,这种方式不会在内部执行 new 操作,效率略高。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









