C#参数区别

补充:C# 方法必背核心概念 + 必记知识点

一、基础概念(必背)
  1. 方法是什么

方法 = 一段可重复使用的代码块,用来实现一个独立功能

使用流程:先定义 → 后调用,不调用永远不执行

2. 实参 & 形参(必考)

形参:定义方法时,括号里的变量(占位符)

实参:调用方法时,传进去的真实值 / 变量

规则:形参类型、个数、顺序 = 实参必须完全一致

3. 静态方法 static

带 static:属于类,调用:类名.方法名() / 同类直接写方法名

不带 static:属于对象,必须 new 对象 再调用:对象.方法名()

4. 返回值

void:无返回值,只能在方法内输出,不能用变量接收

有返回值:把 void 换成对应类型(int/string/自定义类),必须写 return

return 作用:返回结果 + 直接跳出方法,后面代码不再执行

二、参数 4 种核心类型(必背)

1. 默认参数

格式:类型 形参名 = 默认值

规则:只能放在所有普通参数最后

调用:不传用默认值,传了就用传入的值

2. 值传递(默认传递方式,必考)

值类型(int、double、bool 等)

传递:拷贝一份值

结果:方法内修改形参 → 外部实参不变

引用类型(class、自定义对象)

传递:拷贝内存地址

① 改对象。属性 → 外部跟着变

② 给形参 new 新对象 → 外部不变

3. ref 引用传递

作用:形参与实参是同一个变量,共用一块内存

规则:定义、调用都要写 ref,实参必须提前赋值

结果:不管改属性还是 new 对象,外部一定跟着变

4. out 输出参数

作用:一个方法返回多个结果

规则:定义、调用都写 out,方法内部必须给 out 参数赋值,调用时实参可以不初始化

5. ref vs out 必背区别(高频考点)

ref:实参必须先赋值;out:实参可不用赋值

ref:方法内可不用赋值;out:方法内必须赋值

ref:侧重传入 + 传出;out:侧重只传出结果

6. in 只读参数

作用:参数只能读取,不能修改

规则:值类型:完全不能改

对象类型:可以改属性,不能 new 新对象

7. params 可变参数

格式:params 类型\[\] 数组名

作用:接收任意个数同类型参数

铁则:必须是数组,只能放在所有参数的最后一个调用直接传值,不用手动 new 数组

三、方法定义语法(默写版,必背)

复制代码
csharp运行修饰符 static 返回值类型 方法名(参数列表)
{
    方法体;
    return 值; // 无返回值void不用写
}
修饰符:public(公共,最常用)
方法名:大驼峰命名(首字母大写)

四、你代码里必背易错点(避坑专用)

  • 返回对象的方法,必须 new 对象,否则空引用报错
  • 多参数调用:顺序、类型、个数一个都不能错
  • 默认参数放前面 → 直接报错
  • params 放中间 → 直接报错
  • 静态方法不能直接调用非静态方法
  • 值传递对象:改属性变,new 不变;ref 全变

五、一句话速记口诀(考前直接背)

  • 方法:先定义,后调用
  • 实参真,形参假,类型顺序不能差
  • void 无返回,return 出结果
  • 值传递:值拷贝,对象改属性
  • ref 同变量,out 多返回
  • in 只读不改,params 放最后
相关推荐
秋天的怀念_David10 分钟前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
Java码农也是农13 分钟前
Spring 事务详解:@Transactional 如何生效、何时回滚、传播行为怎么选
java·spring boot·spring·事务
学长毕设1 小时前
基于SpringBoot的游乐园管理系统-附源码
java·spring boot·后端
SimonKing1 小时前
震惊:怎么回事,opencode一轮对话耗尽免费额度
java·后端·程序员
装不满的克莱因瓶1 小时前
【SpringAI Alibaba】ReactAgent响应SSE实时流式传输案例实战
java·人工智能·ai·sse·springai
杨凯凡2 小时前
Spring Boot 文件上传怎么做才安全?流式落盘、路径校验与数据库一致性实战
java·spring boot·文件上传·后端安全·数据库一致性
这个昵称不容易2 小时前
旅游管理系统的设计与实现(SpringBoot + MySQL + Vue 前后端分离)
java·springboot·毕设
Rain的Java大神之路2 小时前
LeetCode 37 解数独面试攻略:回溯 + 位掩码 + MRV,从暴力到毫秒级求解
java·后端·leetcode
NEFU_Jyj2 小时前
贝尔数(组合数学)
算法
1-1=03 小时前
C# 数据结构和特殊类型
数据结构·c#·.net·.netcore