传值参数
声明时不带修饰符的形参是值形参。
一个值形参对应于一个局部变量,只是它的初始值来自该方法调用所提供的相应实参
允许方法将新值赋给值参数。这样的赋值只影响由该值形参表示的局部存储位置,而不会影响在方法调用时由调用方给出的实参。
值参数包括 引用参数
输出参数
通过输出参数来获得除返回值之外的额外输出
用 out 修饰符声明的形参是输出形参。类似于引用形参,输出形参不创建新的存储位置。
相反,输出形参表示的存储位置恰是在该方法调用中作为实参给出的那个变量所表示的存储位置。
变量在可以作为输出形参传递之前不一定需要明确赋值,
在方法返回之前,该方法的每个输出形参都必须明确赋值。
引用参数
- 引用形参是用 ref,修饰符声明的形参。与值形参不同,引用形参并不创建新的存储位置。相反,
- 引用形参表示的存储位置恰是在方法调用中作为实参给出的那个变量所表示的存储位置。
- 变量在可以作为引用形参传递之前,必须先明确赋值。
- outterStu和stu 所指向的内存地址是同一块地址 ,而在这个内存地址里面存储的就是对象在堆内存当中的地址
数组参数
- 必需是形参列表中的最后一个,由params修饰
- 举例:String.Format方法和String.Split方法
- 省略声明数组的步骤: int[] array = new int[] {1,2,3}
具名参数
- 参数的位置不再受约束
- 增加代码可读性
- PrintInfo("Time" , 34 )
可选参数
- 参数因为具有默认值而变得可选,可写可不写
- 不推荐使用可选参数
扩展方法(this参数)
- 方法必需是公有、静态的,即被public static所修饰
- 必需是形参列表中的第一个,由this修饰
- 必需由一个静态类(一般类名为SomeTypeExtension)来统一收纳对SomeType类型的扩展方法
- 不修改目标类型的情况下,为目标数据类型“追加”方法
- 举例:LINQ方法
- using System Linq; 引入Linq的名称空间