C# 中 params 关键字实现方法形参个数可变详解

Chloe
Chloe
发布时间:2026-10-15 | 4人浏览过
原创

在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 时,需严格遵守以下规则:

  1. 仅限一维数组:params 只能用于一维数组,不能用于多维数组,也不能用于 List<T>、ArrayList 等集合类型。
  2. 位置限制:带有 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 操作,效率略高。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表