当前位置: 首页 > news >正文

C#方法的返回值

一、返回值的核心定义

方法的返回值,是方法执行完成后,向调用它的地方“返回”的结果。根据返回值的有无和类型,可分为三大类:无返回值(void)基础类型返回值(int、string等)对象类型返回值(自定义类对象)

核心区别:无返回值的方法“只执行功能、不输出结果”;有返回值的方法“执行功能后,将结果传递出去,供外部使用”。

二、无返回值方法(void)

1. 定义规则

  • void表示无返回值,写在方法修饰符(static)之后、方法名之前;

  • 方法体内不需要写 return 关键字(若写,只能写return;,用于提前跳出方法);

  • 方法执行的结果,只能在方法体内部使用(如打印),无法传递到方法体外

2.定义格式

public static void 方法名(参数列表) { // 方法体(仅执行功能,如打印) }

3. 核心注意

  • 无需写return(可写return; 提前跳出方法,后续代码不执行)

  • 结果只能在方法内部使用(如打印),无法拿到方法体外(例:Test1(10,20)只能打印30,不能将30赋值给变量)

  • 不能赋值给变量(错误:int s = Test1(10,20); 语法报错)

4.实战示例

// 定义:无返回值(void)、静态方法,接收两个int类型参数,计算两数之和并打印 public static void Test1(int a, int b) { int sum = a + b; // 方法内部计算求和 Console.WriteLine(sum); // 只能在方法体内打印结果,无法将sum传递出去 } // 调用无返回值方法 static void Main(string[] args) { // 调用Test1方法,只能在方法体里面打印和的值(如10+20=30),不能把30拿到方法体外使用 Test1(10, 20); // 错误示例:不能将void方法的结果赋值给变量(int s = Test1(10,20); 报错) }

三、有返回值方法(int、string等,常用)

1. 定义规则(重中之重,必记)

  • void替换成具体的返回值类型(如int、string、bool),类型必须与return返回的数据类型一致;

  • 方法体内必须写 return 关键字,return 后面跟具体的结果(数据);

  • return 执行后,会立即跳出方法体,后续代码不再执行;

  • 调用时,可将返回值赋值给对应类型的变量,供外部使用(打印、二次计算等)。

2. 通用定义格式

public static 返回值类型 方法名(参数列表) { // 方法体(实现功能,计算结果) return 结果; // 必须写,结果类型与返回值类型一致 }

3. 注意事项

  • 将void替换为具体的返回值类型(int、Student等)

  • 方法体内必须写return关键字,无return会报错

  • return后面的结果类型,必须与方法定义的返回值类型完全一致

4. 调用原则

  • 可赋值给对应类型的变量,供后续使用(如计算、二次打印)

  • 可直接使用(如直接打印),无需赋值给变量

实战案例1(对应代码中的Test2方法,int返回值

// 定义:有返回值(int类型)、静态方法,接收两个int参数,计算两数之和并返回 public static int Test2(int a, int b) { int sum = a + b; // 内部计算求和 return sum; // 返回sum,类型(int)与方法返回值类型(int)一致 // return之后的代码不会执行(如在此处写Console.WriteLine("不会执行"),无效) } // 调用有返回值方法 static void Main(string[] args) { // 调用Test2方法,将返回值(99+99=198)赋值给int类型变量s1 int s1 = Test2(99, 99); Console.WriteLine(s1); // 外部使用返回值,打印198 }

实战案例2(对应代码中的Max方法,int返回值)

// 定义:int返回值,接收三个int参数,找出三个数中的最大值并返回 public static int Max(int a, int b, int c) { int max = 0; int temp = a; temp = a <= b ? b : a; // 先找出a和b中的最大值,赋值给temp max = temp <= c ? c : temp; // 再找出temp和c中的最大值,赋值给max return max; // 返回最大值,类型与方法返回值(int)一致 } // 调用方法 static void Main(string[] args) { // 直接调用方法,将返回值(9)直接打印,无需赋值给变量 Console.WriteLine(Ma

5. 易错点

  • 有返回值的方法忘记写return,或return后面的数据类型与方法定义的返回值类型不匹配(如方法定义int返回值,return "abc",报错);

  • return之后写代码(无效,不会执行);

  • 调用时,未接收返回值(语法不报错,但返回值会被浪费,如直接写Test2(99,99);,不赋值、不打印)。

四、对象类型返回值方法(进阶,重点)

方法的返回值不仅可以是基础类型,也可以是自定义类的对象(引用类型),核心是“new一个对象,赋值后return出去”,调用后可获得完整的对象,访问其属性和方法。

1. 定义规则

  • 返回值类型写自定义类的类名(如Student),与return返回的对象类型一致;

  • 方法体内必须先创建对象(new 类名()),给对象的属性赋值后,再return该对象;

  • 调用时,将返回值赋值给对应类的对象变量,即可访问对象的属性和方法。

2. 实战案例

// 先定义Student类(引用类型,供方法返回使用) public class Student { public string Name { get; set; } // 学生姓名属性 } // 定义:返回值类型为Student(对象),接收string参数,创建学生对象并返回 public static Student Test3(string n) // n是传递的实参(如"张三") { // 1. 必须先new一个Student对象(否则对象为空,报“未将对象引用设置到对象的实例”错误) Student zhangsan = new Student(); // 2. 给对象的属性赋值(将传递的参数n赋值给Name属性) zhangsan.Name = n; // 3. 返回创建好的Student对象,类型与方法返回值类型(Student)一致 return zhangsan; } // 调用对象返回值方法 static void Main(string[] args) { // 调用Test3方法,将返回的Student对象赋值给zs变量 Student zs = Test3("张三"); // 访问对象的属性,使用返回值的结果 Console.WriteLine(zs.Name); // 输出:张三 }

3. 易错点

忘记new对象,直接return未实例化的对象(如Student zhangsan;不写new Student(),直接return zhangsan;,会报空引用异常)。

五、三大返回值类型对比(必背)

返回值类型

关键字/类型

是否需要return

能否外部使用结果

示例方法

无返回值

void

不需要(可写return; 跳出方法)

❌ 不能,只能内部使用

Test1

基础类型返回值

int、string等

✅ 必须写,类型一致

✅ 能,可赋值、打印

Test2、Max

对象类型返回值

自定义类(如Student)

✅ 必须写,类型一致

✅ 能,可访问对象属性

Test3

六、高频易错点(必避坑)

  • 有返回值方法忘记写return,或return类型与方法定义的返回值类型不匹配(报错)

  • void方法赋值给变量(语法错误,如int s = Test1(10,20);)

  • 返回对象时未new对象,导致空引用异常

  • return后写代码(无效,不会执行)

  • 调用有返回值方法时,未接收返回值(语法不报错,但结果被浪费)

七、核心总结(浓缩版,必背)

  • void:不返回结果、仅内部使用、无需return

  • 有返回值:换类型(替换void)、写return、类型一致

  • 基础类型返回值:可赋值、可直接使用,核心实现结果复用

  • 返回对象:必须new,调用后可通过.访问对象属性

  • return执行后,立刻跳出方法体,后续代码无效

http://www.jsqmd.com/news/853517/

相关文章:

  • Article Title
  • Molflow | 实战指南:从模型导入到结果可视化的真空仿真全流程
  • 别再只用默认配置了!GaussDB密码安全策略的5个实战调优项(附完整GUC参数清单)
  • Mac磁盘工具中U盘无法选择APFS格式的排查与修复
  • 谷歌外贸seo优化怎么做?新网站怎么安全换到前3条外链
  • Taotoken Token Plan 套餐如何帮助初创团队控制 AI 成本
  • Unity Ignis插件实战:5分钟搞定你的第一个森林火灾模拟(URP 2022.3LTS)
  • Shamir秘密共享在区块链私钥管理中的实战应用:以MetaMask为例
  • 嵌入式存储优化实战:从eMMC到NAND Flash的软件策略与性能提升
  • 2026劳务外包与派遣服务全解析,以空间无限人力的服务矩阵与企业价值为例 - GrowthUME
  • 从零到上线:DeepSeek API在K8s集群中的灰度发布方案(含Prometheus监控看板+自动熔断脚本)
  • 从PCIe到HDMI:手把手教你用Xilinx FPGA的SerDes实现几个热门接口
  • 宏裕塑胶代理新日铁住金日本工程塑料全系列产品服务详解
  • 商场广告喷绘物料设计制作:吃亏十年总结的经验 - GrowthUME
  • Perplexity经济新闻搜索失效真相(实测137组关键词后发现的3类语义断层陷阱)
  • Mac终极指南:5分钟快速导出微信聊天记录的完整解决方案
  • 2026年降AI工具怎么选?6款主流工具实测对比,精选适配毕业论文的降AI利器 - 降AI实验室
  • 嵌入式核心板选型与实战:基于FETMX6Q-C的工业应用开发指南
  • 5分钟快速上手:Parsec虚拟显示器完全指南,释放你的多屏潜能
  • 【DeepSeek IaC基础设施实战白皮书】:20年SRE亲授——从零构建高可用、可审计、合规就绪的AI原生云基座
  • 3分钟零基础制作专业MDX词典:AutoMdxBuilder终极指南
  • 天津点评代运营哪个品牌好?来看拆解两个实战样本 - GrowthUME
  • 应无所住,而生其心
  • AWorks硬件抽象层:嵌入式开发中UART、I2C、SPI、ADC接口的统一编程实践
  • 从游戏玩家到VR开发者:我是如何用一台Quest3和Unity开启独立创作之路的
  • 2026深度分析罗兰艺境B2B装饰装修工程GEO技术案例,测评北京京华装饰优化过程与效果验证 - 罗兰艺境GEO
  • 163MusicLyrics:本地音乐歌词缺失的智能解决方案
  • 【Perplexity作家深度挖掘术】:如何用1条指令抓取作者学术背景、出版轨迹与观点演进图谱
  • 2026年海南企业为何要优先选本土头部财税服务商?代理记账合规代办排行TOP榜单,初创企业中小微企业大企业本土头部机构优先推荐 - GrowthUME
  • AI从业者的健康管理:软件测试人如何应对研发压力与熬夜