传值参数



引用类型存储的是一个地址 √ Object对象.GetHashCode()是惟一的。
引用参数
目的:在方法内修改该值(所以传进方法前需要提前赋值)
方法内参数指向地址 与 方法外变量指向地址一致。方法内改变时,方法内也随着改变。


将引用的地址进行修改…


①未修改地址,但属性值进行改变了。(一直在操作同一个对象) ②传值参数与引用参数对比:内存机理不同。 传值参数:outterStu变量和stu参数,两个指向内存地址不一样,但存储着相同的一个地址(即实例在堆内存当中的地址)。 引用参数:outterStu变量和stu参数,指向内存地址是同一个,存储着的对象就是堆内存当中的地址。
输出参数
目的:为了该参数向外输出,原来赋的值就会被丢弃。(C#并不要求传入前明确赋值,方法体内需要明确赋值)




数组参数

发现:使用时需要先声明数组?

使用params关键字后,不需要提前声明了。(自动声明数组,把给出的值放进数组,再传进方法) 拓展:其实Console.WriteLine()方法就用了params关键字。
具名参数

优点:①提高代码的可读性 ②参数位置不再受参数列表顺序约束 其实不是参数的某个种类,而是参数的使用方法 √
可选参数
拓展方法(this参数)

①当我们无法对一个类型的源码进行修改的时候,可以使用扩展方法,为这种目标数据类型追加方法。 ②LINQ 也是扩展方法的一大体现。
LINQ 实例
class Program{static void Main(string[] args){var myList = new List<int>(){ 11, 12, 9, 14, 15 };//bool result = AllGreaterThanTen(myList);// 这里的 All 就是一个扩展方法bool result = myList.All(i => i > 10);Console.WriteLine(result);}static bool AllGreaterThanTen(List<int> intList){foreach (var item in intList){if (item <= 10){return false;}}return true;}}
All 第一个参数带 this,确实是扩展方法。(需要引入System.Linq名称空间)
总结

各种参数的使用场景总结:
- 传值参数:参数的默认传递方法
- 输出参数:用于除返回值外还需要输出的场景
- 引用参数:用于需要修改实际参数值的场景
- 数组参数:用于简化方法的调用
- 具名参数:提高可读性
- 可选参数:参数拥有默认值
- 扩展方法(this 参数):为目标数据类型“追加”方法










无扩展方法
有扩展方法
