当前位置: 首页 > article >正文

C#面试常考随笔14: 方法如何传递不定数量的参数?params关键字怎么使用?

使用params关键字,就可以像python传参那样传递多个参数,类似元组

主要作用

params 关键字的主要作用是让方法可以接受不定数量的参数,而不需要在调用方法时显式地创建数组来传递多个参数。这为方法调用提供了更大的灵活性,使得代码更加简洁和易于使用。

使用方式

params 关键字必须用于一维数组类型的参数,并且该参数必须是方法参数列表中的最后一个参数。以下是基本的语法结构:

返回类型 方法名(参数1, 参数2, ..., params 数组类型[] 参数名)
{
    // 方法体
}

示例代码

简单的求和方法示例
using System;

class Program
{
    // 定义一个使用 params 关键字的方法
    static int Sum(params int[] numbers)
    {
        int sum = 0;
        foreach (int num in numbers)
        {
            sum += num;
        }
        return sum;
    }

    static void Main()
    {
        // 调用方法时可以传递任意数量的参数
        int result1 = Sum(1, 2, 3);
        int result2 = Sum(10, 20, 30, 40);
        int result3 = Sum(); // 也可以不传递参数

        Console.WriteLine($"结果1: {result1}");
        Console.WriteLine($"结果2: {result2}");
        Console.WriteLine($"结果3: {result3}");
    }
}

Sum 方法使用 params 关键字定义了一个 int 类型的数组参数 numbers。在 Main 方法中调用 Sum 方法时,可以传递任意数量的 int 类型参数,甚至可以不传递参数。

结合其他参数使用
using System;

class Program
{
    static void PrintInfo(string message, params int[] numbers)
    {
        Console.WriteLine(message);
        foreach (int num in numbers)
        {
            Console.Write(num + " ");
        }
        Console.WriteLine();
    }

    static void Main()
    {
        PrintInfo("以下是一组数字:", 1, 2, 3, 4, 5);
    }
}

PrintInfo 方法有一个普通的 string 类型参数 message 和一个使用 params 关键字的 int 类型数组参数 numbers。调用该方法时,首先传递 string 类型的参数,然后可以传递任意数量的 int 类型参数。

注意事项

  • 只能有一个 params 参数:一个方法的参数列表中只能有一个 params 参数,并且它必须是最后一个参数。
  • 不能与其他数组参数重载:由于 params 参数本质上是一个数组,因此不能定义与 params 参数仅在是否使用 params 关键字上有区别的重载方法。例如,以下代码会导致编译错误:
// 错误示例,会导致编译错误
static void Method(params int[] numbers) { }
static void Method(int[] numbers) { }

http://www.kler.cn/a/538658.html

相关文章:

  • 【Python】元组
  • 【AIGC魔童】DeepSeek v3提示词Prompt书写技巧
  • centos7 curl#6 - Could not resolve host mirrorlist.centos.org; 未知的错误 解决方案
  • Mybatis
  • 【Pytorch函数】PyTorch随机数生成全解析 | torch.rand()家族函数使用指南
  • 语言月赛 202308【小粉兔做麻辣兔头】题解(AC)
  • kafak最新安装教程【kafka_2.13-3.9.0】双语版
  • 电商行业的新篇章:3D和AR技术助力销售转化率提升!
  • 基于html和vue.js以及其他编程技术打造一个仿京东购物网站平台
  • c++学习笔记——c++基础
  • 【DeepSeek】DeepSeek概述 | 本地部署deepseek
  • Day81:数据的保存
  • Thinkpad T480s/X1c 2018 Manjaro Sway(ArchLinux)安装指纹(ID 06cb:009a)
  • 【C语言标准库函数】三角函数
  • 基于SpringBoot的巡游出租管理系统
  • 2025年最新版武书连SCD期刊(中国科学引文数据库)来源期刊已更新,可下载PDF版!需要的作者进来了解~
  • MySQL 数据库编程-C++
  • 消费电子产品中的噪声对TPS54202的影响
  • DeepSeek 与网络安全:AI 驱动的智能防御
  • go数据结构学习笔记
  • Flink 调用海豚调度器 SQL 脚本实现1份SQL流批一体化的方案和可运行的代码实例
  • COBOL语言的区块链
  • 使用 Python-pptx 库提取 PPTX 文件中的结构与文字
  • 关于Redis的持久化
  • 系统URL整合系列视频三(前端代码实现)
  • Spring Boot: 使用 @Transactional 和 TransactionSynchronization 在事务提交后发送消息到 MQ