C#基础学习(六)函数的变长参数和参数默认值

什么是变长参数呢?

指的是你传入函数中的形参可以不定项性,你可以输入一个数组进去,就相当于有数组长度那么多的参数可以拿来使用。那么需要怎么来实现呢,就一个关键字params,这个关键字的作用就是当你写在函数参数传入的地方,那么后面一定是一个数组,这个数组就是你传入的参数。

为什么我们会用到变长参数呢?

答:因为你有的时候是不知道参数具体有多少个的,如果知道的话,直接用数组更加方便。

注意:

1、params只能出现一次

2、params后面必须是数组

3、params前面还可以有其他类型的参数

cs 复制代码
        //params int[] 意味着可以传入n个int参数 n可以等于0 传入的参数会存在arr数组中
        //注意:
        //1.params关键字后必为数组
        //2.数组类型任意
        //3.函数参数可以有其他的参数和params关键字修饰的参数
        //4.函数参数中最多只能出现一个params关键字 并且一定是在最后一组参数 前面可以有任何参数

示例代码:

cs 复制代码
// 正确写法:修正递归调用错误
static int Sum(params int[] arr)
{
    int sum = 0;
    foreach (int num in arr)
    {
        sum += num;
    }
    return sum; // 正确返回计算结果
}

// 混合参数示例
static void PrintUserInfo(string name, params object[] info)
{
    Console.Write($"Name: {name}, Info:");
    foreach (var item in info)
    {
        Console.Write($" {item}");
    }
    Console.WriteLine();
}

执行结果:

cs 复制代码
Sum(1, 2, 3);        // 返回6
Sum();               // 返回0(空数组)
PrintUserInfo("小明", 15, "A班", 98.5); // 混合参数调用

使用建议

  1. 变长参数使用场景:适用于参数数量不确定的情况(如数学运算、日志记录等)
  2. 参数默认值最佳实践
    • 优先将最可能被省略的参数设为可选
    • 当需要跳过中间参数时,使用命名参数调用
    • 避免在后续版本中修改默认值(可能破坏现有调用)
  3. 性能注意事项
    • params会产生数组对象,高频调用时考虑重载优化
    • 默认参数在编译时展开,不影响运行时性能

补充一个小知识:

//有参数默认值的参数 一般称为可选参数

//作用:当调用函数时可以不传入参数,不传就可以使用默认的值作为参数的值

//注意:

//1.支持多参数默认值 每个参数都可以有默认值

//2.如果要混用 可选参数 必须写在 普通参数后面

相关推荐
YuanlongWang15 小时前
C# 基础——装箱和拆箱
java·开发语言·c#
MicroTech202517 小时前
微算法科技(MLGO)研发突破性低复杂度CFG算法,成功缓解边缘分裂学习中的掉队者问题
科技·学习·算法
future141219 小时前
MCU硬件学习
单片机·嵌入式硬件·学习
好奇龙猫19 小时前
日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(4):文法運用
学习
mtactor19 小时前
投资理财学习笔记
笔记·学习·金融
浮游本尊20 小时前
React 18.x 学习计划 - 第四天:React Hooks深入
前端·学习·react.js
QQ129584550421 小时前
C# 如何能够创建一个MVC的WEB项目
c#·mvc
立志成为大牛的小牛21 小时前
数据结构——二十六、邻接表(王道408)
开发语言·数据结构·c++·学习·程序人生
Olrookie1 天前
若依前后端分离版学习笔记(二十)——实现滑块验证码(vue3)
java·前端·笔记·后端·学习·vue·ruoyi
请你喝好果汁6411 天前
Conda_bashrc 初始化机制学习笔记
笔记·学习·conda