本文摘自PHP中文网,作者青灯夜游,侵删。
C#方法的参数有六种,分别是值参数、引用参数、输出参数、参数数组、命名参数、可选参数。下面本篇文章就来给大家介绍一下,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。值参数
值参数是方法的默认类型,通过复制实参的值到形参的方式把数据传递到方法,方法被调用时,系统作两步操作;
1、在栈中为形参分配空间。
2、复制实参到形参。
1)在方法被调用前,用作实参的变量a1的引用已经在栈里了。
2)随着方法的开始,系统在栈中为形参分配空间,并从实参复制值。
3)因为a1是引用类型,所以引用被复制,结果实参和形参都引用堆中的同一个对象。
4)因为a2是值类型,所以值被复制,产生了一个独立的数据。
5)在方法执行后,形参被从栈中弹出。
6)a2、值类型,它的值不受方法行为的影响。
7)a1、引用类型,它的值被方法的行为改变了。
引用参数
1、使用引用参数时,必须在方法的声明与调用中使用ref修饰符。
2、实参必须是变量,在用作实参前必须赋值。
对于值参数,系统在栈上为形参分配内存;相反,对于引用参数,形参的参数名看起来就好像是实参变量的别名,也就是说,它们指向的是相同的内存位置。所以在方法的执行过程中对形参作的任何改变,在方法执行完成后依然有效(表现在实参变量上)。
引用参数的传递,对值类型与引用类型都是完全传递,不存在复制值与复制引用,即引用相同的内存位置。
输出参数
输出参数用于从方法体内把数据传递到调用代码,它非常类似引用参数。
1、必须在方法的声明与调用中使用out修饰符。
2、和引用参数相似,实参必须是变量。
就像引用参数,输出参数的形参担当实参的别名,方法内对形参的任何改变在方法执行完成后,通过实参变量都可见。
与引用参数的不同,输出参数有以下2个要求。
1、在方法内部,输出参数在被读取之前必须被赋值,这意味着参数的初始值是无关的,因此没有必要在方法调用之前为实参赋值。
2、在方法返回前,方法内部的任何贯穿的可能路径都必须为所有输出参数进行一次赋值。
参数数组
上面3中参数方式,必须严格的一个实参对应一个形参,参数数组不一样,它允许零个或多个实参对应一个特殊的形参。
参数数组的要求如下:
1、在一个参数列表中只能有一个参数数组。
2、如果有,它必须是列表中的最后一个。
声明参数数组,必须要有params修饰符(调用不需要修饰符),必须是一种类型的数组。
相关阅读 >>
C#之解决百度地图api app sn校验失败问题(代码实例)
更多相关阅读请进入《C#》频道 >>
C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。