C#方法params参数用法及说明

 更新时间:2026年06月06日 10:15:17   作者:z落落  
这篇文章主要介绍了C#方法params参数用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、params参数核心定义(必背,对应原代码注释)

//params int[] a:
//params:参数列表 允许传递不定数量的参数,
//int[] a;参数a就是整型的容器,可以存储多个整型的数 
// a.Length 就是容器的长度
//string[] a 存放字符串的容器
//bool[] b  存放bool的容器

✅ 必记知识点(核心,直接背):

  • params是C#中用于实现不定数量参数传递的关键字,核心作用是:允许调用方法时,传递任意数量(0个、1个、多个)的同类型参数。

  • params参数本质是“数组”:params后面必须跟“数组类型”(如int[]、string[]、bool[]),该数组就是存储所有传递参数的“容器”。

  • 核心属性:数组名.Length(如a.Length),表示容器中存储的参数个数(即传递的参数数量)。

  • 常见场景:params int[](存整型参数)、params string[](存字符串参数)、params bool[](存bool类型参数),本质都是数组。

二、params参数的语法(必默写,易错重点)

1. 方法定义语法(硬性要求)

// 格式:修饰符 static 返回值类型 方法名(params 数组类型 数组名)
// 核心要求:params必须修饰数组,且只能修饰一个参数,且该参数必须是方法的最后一个参数
// 场景1:仅params参数(无其他参数)
public static void Test1(params int[] a)
{
    //Console.WriteLine(a.Length) ; // 最大下标= a.Length-1;
    //Console.WriteLine(a[0]); //访问每一个参数时候 通过参数的下标进行访问, 下标从0开始
    //Console.WriteLine(a[a.Length-1]);//取最后一个参数;
    //取出所有的参数(循环遍历)
    for (int i = 0; i < a.Length; i++)
    {
        Console.WriteLine(a[i]);
    }
}
// 场景2:params参数+普通参数(params必须在最后)
public static void Test2(int a,int b,params int[] c)// a =10 ,b=20;
{
    Console.WriteLine(c[0]);//30(访问params数组的第一个元素)
}

✅ 必记要点(核心,标红重点):

  • params关键字必须修饰数组类型(如int[]、string[]),不能修饰单个值类型(如int、string),否则报错。

  • 一个方法中只能有一个params参数,不能同时定义多个params参数(如public static void Test(params int[] a, params string[] b) 报错)。

  • params参数必须是方法的最后一个参数(如Test2中,params int[] c在int a、int b之后),放在前面会报错。

2. 方法调用语法(必记,结合原代码)

static void Main(string[] args)
{
    // 场景1:调用仅params参数的方法(传递任意数量的同类型参数)
    Test1(1);//a.Length的长度1(传递1个参数)
    Test1(1, 2);//a.Length=2(传递2个参数)
    Test1(1, 2,4,4,4,4,4,4,4,4,44);//a.Length=11(传递11个参数)
    Test1();//允许传递0个参数,此时a.Length=0(不报错)
    // 场景2:调用params+普通参数的方法(普通参数必须按顺序传递,params参数在最后)
    Test2(10, 20, 30, 40, 50); // a=10,b=20,c数组存储30、40、50(c.Length=3)
}

✅ 必记要点:

  • 调用时,无需手动创建数组,直接传递任意数量的同类型参数即可(编译器会自动将这些参数封装成数组)。

  • 允许传递0个参数(此时params数组长度为0,遍历数组时不会报错,只是不执行循环)。

  • 若方法有普通参数+params参数,需先传递普通参数(按定义顺序),再传递params对应的不定数量参数。

三、params参数的核心用法(必记,结合原代码)

1. 访问参数的方式(必考)

public static void Test1(params int[] a)
{
    // 1. 获取参数个数(数组长度)
    Console.WriteLine(a.Length); // 如传递11个参数,输出11
    // 2. 访问单个参数(通过下标,下标从0开始)
    Console.WriteLine(a[0]); // 访问第一个参数(下标0)
    Console.WriteLine(a[a.Length-1]);// 访问最后一个参数(下标=长度-1)
    // 3. 遍历所有参数(最常用,取出所有传递的参数)
    for (int i = 0; i < a.Length; i++)
    {
        Console.WriteLine(a[i]); // 依次输出每个参数
    }
}
  • 易错重点:数组下标从0开始,最大下标 = 数组长度 - 1(如a.Length=11,最大下标是10,访问a[11]会报错)。

2. params+普通参数的调用逻辑(结合Test2)

public static void Test2(int a,int b,params int[] c)
{
    Console.WriteLine(c[0]);//30
}
// 调用:Test2(10, 20, 30, 40, 50);
// 逻辑解析:
// 前两个参数(10、20)对应普通参数a、b,后续所有参数(30、40、50)封装到c数组中
// c数组内容:[30,40,50],c[0]就是30,所以输出30

四、params参数必背规则(直接默写,考试高频)

  • 1. params必须修饰数组类型(如int[]、string[]),不能修饰单个值类型;

  • 2. 一个方法只能有一个params参数;

  • 3. params参数必须是方法的最后一个参数

  • 4. 调用时,可传递0个、1个或多个同类型参数,无需手动创建数组;

  • 5. 访问params参数的元素,通过“数组名[下标]”,下标从0开始,最大下标=数组长度-1;

  • 6. params参数本质是数组,可使用数组的所有属性(如Length)和方法。

五、高频易错点(避坑专用,必记,对应报错场景)

  • 易错1:params修饰非数组类型(如public static void Test(params int a))→ 语法报错;

  • 易错2:一个方法定义多个params参数(如public static void Test(params int[] a, params string[] b))→ 报错;

  • 易错3:params参数不是方法的最后一个参数(如public static void Test(params int[] a, int b))→ 报错;

  • 易错4:访问params数组时,下标超出范围(如a.Length=2,访问a[2])→ 数组越界报错;

  • 易错5:调用params+普通参数的方法时,普通参数传递顺序错误(如Test2(30, 10, 20),将params参数提前)→ 报错;

  • 易错6:误以为params参数不能传递0个参数→ 可以传递0个,此时数组长度为0,遍历不会报错;

  • 易错7:手动创建数组传递给params参数(如Test1(new int[]{1,2,3}))→ 语法允许,但无需手动创建,编译器会自动封装。

补充说明

所有知识点、易错点均严格对应原代码,params参数的核心是“不定数量参数传递”,重点记忆“3个语法规则”(修饰数组、仅一个、在最后)和“下标访问规则”,考试中常考查语法规范和调用逻辑,结合Test1、Test2方法强化记忆,规避数组越界、参数顺序错误等常见报错。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C#简单生成缩略图的方法

    C#简单生成缩略图的方法

    这篇文章主要介绍了C#简单生成缩略图的方法,涉及C#操作图片的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • C#通过Python.NET调用Python pyd扩展模块的实践指南

    C#通过Python.NET调用Python pyd扩展模块的实践指南

    在工业软件与算法融合的场景中,经常需要将 Python 生态的高性能算法库集成到 C# 桌面或后端应用中,下面我们就来看看在C#应用中调用Python编译模块(pyd)有哪些技术方案吧
    2026-05-05
  • C#读取视频的宽度和高度等信息的方法

    C#读取视频的宽度和高度等信息的方法

    这篇文章主要介绍了C#读取视频的宽度和高度等信息的方法,通过执行一条CMD命令来实现读取视频宽度和高度的功能,具有不错的实用价值,需要的朋友可以参考下
    2014-11-11
  • C#中把字符串String转换为整型Int的小例子

    C#中把字符串String转换为整型Int的小例子

    这篇文章主要介绍了C#中把字符串String转换为整型Int的小例子,本文使用TryParse方法实现转换,需要的朋友可以参考下
    2014-08-08
  • C#中通过反射将枚举元素加载到ComboBo的实现方法

    C#中通过反射将枚举元素加载到ComboBo的实现方法

    本文主要介绍了C#中通过反射将枚举元素加载到ComboBo的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C#合并多种格式文件为PDF的方法

    C#合并多种格式文件为PDF的方法

    这篇文章主要为大家详细介绍了C#合并多种格式文件为PDF的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • 利用C#如何给PDF文档添加文本与图片页眉

    利用C#如何给PDF文档添加文本与图片页眉

    页眉常用于显示文档的附加信息,我们可以在页眉中插入文本或者图形,例如,页码、日期、公司徽标、文档标题、文件名或作者名等等。那么我们如何以编程的方式添加页眉呢?这篇文章主要介绍了利用C#如何给PDF文档添加文本与图片页眉的相关资料,需要的朋友可以参考下
    2017-01-01
  • C#批量更新sql实例

    C#批量更新sql实例

    这篇文章主要介绍了C#批量更新sql的方法,详细讲述了其实现步骤与对应的核心代码,非常实用,需要的朋友可以参考下
    2014-10-10
  • 使用C#与SQL Server数据库进行交互的详细步骤

    使用C#与SQL Server数据库进行交互的详细步骤

    在C#中与数据库进行交互,通常使用ADO.NET(ActiveX Data Objects .NET)框架,ADO.NET是.NET Framework中用于数据访问的一组类库,它提供了多种用于连接和操作数据库的方法,以下是使用C#与SQL Server数据库进行交互的详细步骤,需要的朋友可以参考下
    2024-08-08
  • C#弃元与异步使用与区别

    C#弃元与异步使用与区别

    弃元是一种在代码中用于显式忽略特定值的占位符,没有实际存储空间,也没有关联的值,本文就来介绍一下C#弃元与异步使用,具有一定的参考价值,感兴趣的可以了解一下
    2026-03-03

最新评论