输出参数
函数的输出只有返回值有时不太够,此时需要用到输出参数,用修饰词out声明
输出参数的要求与引用参数类似,需要是变量,此外,输出参数也是实参的别名,指向堆中同一对象。
输出参数与引用参数的不同在于,在方法内部给输出参数赋值后才能读取它,且返回前必须在所有路径都为输出参数赋值。
C#7.0之后,可以不必预先声明变量作为输出参数了,如:
参数数组
参数数组允许同一类型的零个或多个实参对应一个形参,使用参数数组需要注意的点如下:
参数数组的声明方法:
方法调用
使用参数数组的方式有两种:
这说明我们在调用参数数组时不需要使用修饰符params,这里与其他参数类型有些区别:
而参数数组在声明时需要使用修饰符,调用时不允许有修饰符
在使用参数列表时,编译器的动作是:
直接将数组作为实参时,编译器会使用你的数组而不是创建新的。
参数类型总结
方法重载
一个类中的同名方法称为方法重载,这些同名方法必须有不同的“签名”:
命名参数
位置参数根据形参与实参的位置匹配,不使用位置参数的话,还可以使用类似字典形式的命名参数:
当代码调用了多次时,使用命名参数有助于代码的阅读
可选参数
意思是当我们在设定形参时可以指定形参的默认值,然后在加载实参时可以不加载该形参对应的实参
但也并不是所有的参数都可以作为可选参数:
所有类型的形参的声明顺序遵循以下原则:
栈帧
在调用方法时,内存从栈顶开始分配,保存和方法关联的一些数据项,这块内存就是栈帧
递归
递归是方法调用自己,为每一次方法调用把新的栈帧压入栈顶。