C# 方法参数的基本结构为:
输入参数
C# 中方法参数无默认值,可以用重载代替默认值功能。
无修饰符的情况下,参数值始终按值传递,不论传递的参数类型是值类型还是引用类型,而 VB 中默认情况下是按引用传递。
也就是说方法对参数值的修改不会影响到方法之外的变量。
质疑:既然是按值传递,为什么我在传递一个对象时,对该对象的修改影响到了外部的对象?
强调一遍,不论是值类型还是引用类型,默认都是按值传递的。对于引用类型,传递时,复制的是引用地址,并不是复制的引用地址的数据,所以方法体内对引用地址数据的修改影响到了方法外的地址数据。
string 是个特例,尽管是引用类型,仍按值类型的形式传递。
引用参数
我们可以通过方法返回值,有时需要返回多个值时,利用引用参数较为方便。
引用参数如同其它语言中的输入输出参数,调用者必须初始化变量。
显示的结果是 3,而不是 0。
注意,调用时 ref 不可少。
输出参数
输出参数功能和引用参数相同,但调用者可以不初始化变量。尽管二者功能相同,也不要混用。
注意,调用时 out 不可少。
尽管 ref 和 out 意义不同,当两方法仅存在 ref 和 out 差别时,将无法实现重载,如下示例将发生错误:
而下列可以重载:
下列也可以重载: