C#中的方法参数
参考书籍: C#图解教程
参数中不管是值类型还是引用类型,只要不加任何修饰符,都和C/C++一样,是在函数体内复制出一个变量,只不过引用类型复制出来的变量也是指向引用的对象。所以都不能在函数内直接修改实参的值。
《C#图解教程》P74
ref修饰符
在参数前面添加ref修饰符就相当于C++中函数调用时参数前添加引用(&修饰符),这个参数在声明调用时都要加ref修饰符,且本身需要分配内存。
out修饰符
和ref一样都是引用,但这个引用的参数可以不初始化传入,而必须在函数内部,且使用和返回前赋值(重新初始化)。同样在声明和调用时要加out修饰符。
params修饰符
和C++的可变参数类似,但没有研究过C++的可变参数。在C#参数类型一定是一维数组在参数列表最后一个,且只有一个params参数,否则会报错。在声明时需要修饰符,而调用时不允许添加修饰符。
命名参数
直接上图(运行结果在图右边小黑条)
要求如果有命名参数,就必须写出所有的参数列表,但params参数和可选参数(看下面)可以省略。
可选参数
和C++一样,就是默认参数。只允许值类型有默认值,和引用类型的null值。看下图
《C#图解教程》P77