C#的六种参数形式介绍
平时在工作学习过程中,编写或调用函数时会遇到各种形式的参数,网络查询后特记录后用(参考他人总结):
共六种形式:值参数、引用参数、输出参数、参数数组、命名参数、可选参数;
------------------------------------------------------值参数--------------------------------------------------------------
最常用的参数形式;
1 | void DoWork( int para1, string para2, bool para3, float para4) |
注意值参数,并不是指参数类型是值类型,指的是调用参数时,通过复制实参的值到形参的方式把数据传递到方法,方法被调用时,系统作两步操作;
1、在栈中为形参分配空间。
2、复制实参到形参。
例如参数para=5是int类型,则把para的值5传递给方法;此时在方法中更改形参的值并不影响实参。
例如para是引用类型,则传递过去的是para指向的堆中的对象。此时形参和实参指向同一个对象,修改形参中的值,则实参的值同时发生改变。
-----------------------------------------------------引用参数--------------------------------------------------------------
*注意不是引用类型的参数
1、使用引用参数时,必须在方法的声明与调用中使用ref修饰符。
2、实参调用前必须赋值。
引用参数等于把实参的地址传递给方法,方法中的任何操作都会更改实参的值。
*引用类型的参数在加ref和不加的区别是(ref指向新地址则实参跟随改变指向)(不加ref指向新地址与实参无关)
1 | void DoWork( ref int para) |
-----------------------------------------------------输出参数--------------------------------------------------------------
方法结束前必须对形参进行赋值;
1.调用时使用out修饰符;
2.实参在调用前没必要赋值;
输出参数也是等于把实参的地址传递给方法,与引用参数的区别是方法结束前必须对参数进行赋值,所以调用前的赋值会被覆盖,没必要赋值。
1 2 3 4 | void DoWork( out int para) { para = 1; } |
-----------------------------------------------------参数数组--------------------------------------------------------------
比如有一个方法要求和,可以传入1个整数参数,也可以2个,也可以3个,依次类推多个,此时显然不能重复写n个方法以支持多种情况。此时用到参数数组
1 | void DoWork( params int [] para) |
此时调用DoWork方法可以传入大于等于1个数量的整数类型参数;必须要有params修饰符(调用不需要修饰符),必须是一种类型的数组。
1、在一个参数列表中只能有一个参数数组。
2、如果有,它必须是列表中的最后一个。
-----------------------------------------------------命名参数--------------------------------------------------------------
在给方法传入参数时标明形参名称;
在调用方法时,必须严格按照形参的顺序写入参数,命名参数允许你任意顺序写入参数,需要在参数前加上形参名称:
1 | void DoWork( int para1, int para2, int para3) |
Z如果想传入1,2,3,以前只能写DoWork(1,2,3),命名参数可以写成:
1 | DoWork(para3:3,para1:1,para2:2); |
----------------------------------------------------可选参数--------------------------------------------------------------
在方法调用时可以传入某参数,也可以不传,需要为参数指定默认值;
1 | void DoWork( int para1, int para2 = 2, int para3 = 3) |
调用可用以下形式:
1 2 | DoWork(1); //等于1,2,3 DoWork(1, para3: 13); //等于1,2,13 |
不是所有的参数类型都可以作为可选参数。
1、只要值类型的默认值在编译的时候可以确定,就可以使用值类型作为可选参数。
2、只有在默认值是null的时候,引用类型才可以作为可选参数来使用。
3、可选参数只能是值参数。
所有必填参数必须在可选参数声明之前声明,如果有params参数,必须在所有可选参数之后声明。
必须从可选参数列表的最后开始省略,一直到开头,否则会造成参数歧义。
若想消除参数歧义,可以结合命名参数和可选参数的特性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)