C# 中方法传值方式
1. 普通传值方式
事先定义变量,通过将变量传入到调用的方法名
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//测试方法 public static void test(string name, int age, int score) { Console.WriteLine("姓名:{0}, 年龄:{1},成绩:{2}", name, age, score); } //Main方法调用 string strName = "Lucky"; int iAge = 12; int iScore = 98; test(strName, iAge, iScore); //姓名:Lucky, 年龄:12,成绩:98
2. 通过Key-Value形式传入
不需要定义变量,但传入的key与方法的参数名一致,value与方法参数定义的类型一致,参数的顺序可以和方法的参数顺序不一致
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//测试方法 public static void test(string name, int age, int score) { Console.WriteLine("姓名:{0}, 年龄:{1},成绩:{2}", name, age, score); } //Main方法 test(name: "Lucky", age: 12, score: 98); //参数顺序可以和方法的参数顺序不一致, 姓名:Lucky, 年龄:12,成绩:98
3. 定义方法预设默认值
当传入的参数省略时,方法体使用默认参数值(注意:方法定义默认值的参数放在最后,多个默认值参数中间不能有非默认值的参数)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//测试方法 public static void test(string name, int age = 12, int score = 98) { Console.WriteLine("姓名:{0}, 年龄:{1},成绩:{2}", name, age, score); } //Main方法 test(name: "Lucky"); //姓名:Lucky, 年龄:12,成绩:98 test(name: "Lucky", age: 14); //姓名:Lucky, 年龄:14,成绩:98 test(name: "Lucky", age: 18, score: 88); //姓名:Lucky, 年龄:18,成绩:88
4. 不定参数Params
- 参数数组必须是一维数组
- 不允许将params修饰符与ref和out修饰符组合起来使用, 且一个方法只允许有一个params修饰的参数,并且只能放在方法的最后一个参数
- 与参数数组对应的实参可以是同一类型的数组名,也可以是任意多个与该数组的元素属于同一类型的变量
- 若实参是数组则按引用传递,若实参是变量或表达式则按值传递
- 用法:可变的方法参数,也称数组型参数,适合于方法的参数个数不知的情况,用于传递大量的数组集合参数;当使用数组参数时,可通过使用params关键字在形参表中指定多种方法参数,并在方法的参数表中指定一个数组
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//测试方法一:不带固定参数的可变参数 public static void test(params int[] list) { foreach (var item in list) { Console.WriteLine(item); } } //Main方法 test(1, 2, 3); //1, 2, 3 test(new int[] { 1, 2, 3, 4 }); //1,2,3,4
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//测试方法二:带固定参数的可变参数 public static void test(string name, params int[] list) { foreach (var item in list) { Console.WriteLine("Name:{0}, 数值:{1}", name, item); } } //Main方法 test("Lucky", 1, 2, 3); /* * Name:Lucky, 数值:1 * Name:Lucky, 数值:2 * Name:Lucky, 数值:3 */ test("Lucky", new int[] { 1, 2, 3, 4 }); /* * Name:Lucky, 数值:1 * Name:Lucky, 数值:2 * Name:Lucky, 数值:3 * Name:Lucky, 数值:4 */