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

server/2025/2/6 12:26:57/

使用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.ppmy.cn/server/165404.html

相关文章

nuxt3 layout导航栏切换问题

nuxt3 layout导航栏切换问题 最近在玩nuxt3&#xff0c;遇到一个问题&#xff0c;我按照官方文档使用的layouts文件夹&#xff0c;然后下面使用了了多个页头页脚&#xff0c; 然后在app.vue是这么配置的 <template><script setup> import { useCookieStore } fr…

实战网络安全:渗透测试与防御指南

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 引言 在数字化时代&#xff0c;网络安全已成为企业和个人不可忽视的重要课题。网络攻击的复杂性与日俱增&#xff0c;从数据泄露…

Autosar-以太网是怎么运行的?(原理部分)

写在前面&#xff1a; 入行一段时间了&#xff0c;基于个人理解整理一些东西&#xff0c;如有错误&#xff0c;欢迎各位大佬评论区指正&#xff01;&#xff01;&#xff01; 1.TCP/IP协议详解 TCP/IP协议包含了一系列的协议&#xff0c;也叫TCP/IP协议族&#xff08;TCP/IP P…

iOS文字滚动:使用CATextLayer实现的跑马灯(附源码)

引言 在 iOS 开发中&#xff0c;跑马灯效果&#xff08;Marquee Effect&#xff09;是一种常见的文本滚动效果&#xff0c;广泛应用于广告展示、动态消息栏、通知推送等场景。通过跑马灯效果&#xff0c;我们能够以流畅的方式展示超出屏幕范围的文本&#xff0c;提升用户体验。…

【怎么用系列】短视频戒除-1-对推荐算法进行干扰

如今推荐算法已经渗透到人们生活的方方面面&#xff0c;尤其是抖音等短视频核心就是推荐算法。 【短视频的危害】 1> 会让人变笨&#xff0c;慢慢让人丧失注意力与专注力 2> 让人丧失阅读长文的能力 3> 让人沉浸在一个又一个快感与嗨点当中。当我们刷短视频时&#x…

Linux+Docer 容器化部署之 Shell 语法入门篇 【Shell 替代】

&#x1f380;&#x1f380;Shell语法入门篇 系列篇 &#x1f380;&#x1f380; LinuxDocer 容器化部署之 Shell 语法入门篇 【准备阶段】LinuxDocer 容器化部署之 Shell 语法入门篇 【Shell变量】LinuxDocer 容器化部署之 Shell 语法入门篇 【Shell数组与函数】LinuxDocer 容…

基于PyQt5打造的实用工具——PDF文件加图片水印,可调大小位置,可批量处理!

01 项目简介 &#xff08;1&#xff09;项目背景 随着PDF文件在信息交流中的广泛应用&#xff0c;用户对图片水印的添加提出了更高要求&#xff0c;既要美观&#xff0c;又需高效处理批量文件。现有工具难以实现精确调整和快速批量操作&#xff0c;操作繁琐且效果不理想。本项…

【JavaEE】_MVC架构与三层架构

目录 1. MVC架构 2. 三层架构 3. MVC架构与三层架构的对比 3.1 MVC与三层架构的对比 3.2 MVC与三层架构的共性 1. MVC架构 在前文已介绍关于SpringMAC的设计模式&#xff0c;详见下文&#xff1a; 【JavaEE】_Spring Web MVC简介-CSDN博客文章浏览阅读967次&#xff0c;点…