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

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

在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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。