值参数:声明是不加任何修饰的参数,它表明实参和形参之间按值传递,当使用值参数的方法被调用时,编译器为形参分配存储单元,然后将对应的实参的值复制到形参中,由于是值类型的传递方式,所以在方法中对形参的修改,并不会影响实参。
ref参数:ref参数使用形参按引用传递,在方法中,对形参所做的任何更改都将反映在实参中,如果是要用ref参数,则方法声明和方法调用都必须显示的使用ref关键字。
out参数:out键字用来定义输出参数,它会导致参数通过引用来传递,这与ref参数类似,不同之处在于ref要求变量必须在传递之前进行赋值,而使用out关键字定义的参数不用进行赋值即可使用。如果要使用out参数,则方法声明和方法调用都必须显示的使用out关键字。
params参数:声明方法时,如果有多个相同类型的参数,可以定义为params参数,params参数是一个一维数组,主要用来指定在参数数目可变时所采用的方法参数。
使用ref参数时,需注意:
1.ref关键字只对跟在他后面的参数有效,而不是应用于整个参数列表。
2.调用方法时必须使用ref修饰实参,而且因为是引用参数,所以实参和实参的参数类型一定要完全匹配。
3.实参只能是变量,不能是常量或者表达式。
4.ref参数在调用之前一定要进行赋值。