## 一、基础概念### 1. 形参形式参数**定义位置方法声明定义处方法名后小括号内定义的变量**csharp// n、msg 是形参static void Print(int n, string msg){}1. 作用规范方法接收数据的**数据类型、个数、顺序**相当于方法预留的数据入口2. 内存方法未调用时形参不分配实际内存空间仅做语法约束3. 生命周期仅在当前方法内部生效方法执行完毕形参销毁。### 2. 实参实际参数**定义位置调用方法时括号中传入的真实数据/变量**csharp// 10、测试文字是实参Print(10, 测试文字);1. 作用调用时向方法传递真实值赋值给对应位置的形参2. 来源常量、已有变量、表达式、方法返回值都可作为实参3. 赋值逻辑调用瞬间**实参→对应位置形参完成赋值**。### 3. 匹配强制规则1. **个数一致**无默认值时实参数量 形参数量2. **顺序一致**实参顺序必须和形参书写顺序一一对应3. **类型兼容**实参类型必须和形参类型匹配隐式转换合法除外如int→double类型不匹配编译报错。## 二、常用参数分类详解### 1. 必选参数普通参数- 特点无默认值调用**必须手动传入对应实参**缺一不可- 语法规范全部写在参数列表靠前位置csharp// count为必选参数static void Show(int count, string name) { }// 调用必须传2个实参Show(5, 张三);### 2. 可选参数带默认值参数1. 定义声明形参时直接赋值即设置默认值2. 调用规则调用时可省略该实参省略则自动使用预设默认值3. **硬性语法可选参数必须写在所有必选参数之后**必选在前、可选在后csharp// name可选默认值无名氏static void Show(int count, string name 无名氏) { }Show(3); //省略第二个实参name无名氏Show(3, 李四);//手动传参覆盖默认值### 3. 拓展补充拓展参数备考常用#### 1命名实参调用时参数名:值格式传参可打乱实参书写顺序多用于参数多的场景csharpShow(name: 王五, count: 2);#### 2可变参数 paramsparams修饰数组形参支持传入任意个数同类型实参只能放在参数列表末尾。## 三、值传递底层逻辑重点1. **默认传参方式值传递**实参把**数据副本**赋值给形参方法内修改形参的值不会影响外部原始实参变量csharpstatic void Change(int num) { num 999; }int a 10;Change(a);//a依旧是10不受方法内修改影响2. 引用类型类、数组做实参传递地址副本方法内修改对象内部数据会影响外部原对象。## 四、核心总结背诵版1. **定义分两头**定义方法写形参定类型定位置调用方法写实参传真实数据2. **匹配三要素**个数、顺序、类型一一对应3. **可选在后放**带默认值参数必须在普通必选参数后面4. **不传用默认**可选参数调用缺省实参自动启用默认值5. **默认值传递**普通值传递只传副本改形参不影响原实参。## 五、完整示例代码csharpusing System;class Test{//count必选msg可选默认默认文本static void Print(int count, string msg 默认文本){for (int i 0; i count; i){Console.WriteLine(msg);}}static void Main(){Print(2); //只用默认字符串Print(3, 自定义内容); //手动传入实参覆盖默认Console.ReadKey();}}