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

C# 方法(返回值、返回语句和void方法)

本章内容:
方法的结构
方法体内部的代码执行
局部变量
局部常量
控制流
方法调用
返回值
返回语句和void方法
局部函数
参数
值参数
引用参数
引用类型作为值参数和引用参数
输出参数
参数数组
参数类型总结
方法重载
命名参数
可选参数
栈帧
递归

返回值

方法可以向调用代码返回一个值。返回的值被插入到调用代码中发起调用的表达式所在的
位置。
要返回值,方法必须在方法名前面声明一个返回类型。
如果方法不返回值,它必须声明void返回类型。
下面的代码展示了两个方法声明。第一个返回int型值,第二个不返回值。

image
声明了返回类型的方法必须使用如下形式的返回语句从方法中返回一个值。返回语句包括
关键字return及其后面的表达式。每一条贯穿方法的路径都必须以一条这种形式的return语句
结束。

//计算返回类型的值
return Expression; //返回一个值

例如,下面的代码展示了一个名为GetHour的方法,它返回int型值。

int GetHour()
{DateTime dt=DateTime.Now; //获取当前时间和日期int hour=dt.Hour;         //获取小时return hour;              //返回一个值
}

image
也可以返回用户定义类型的对象。例如,下面的代码返回一个MyClass类型的对象。

MyClass method3()
{MyClass mc=new MyClass();...return mc;
}

image
来看另一个示例。在下面的代码中,方法GetHour在Main的WriteLine语句中被调用,并在
该位置返回一个int值到writeLine语句中。

class MyClass
{public int GetHour(){DateTime dt=DateTime.Now; //获取当前时间和日期int hour=dt.Hour;         //获取小时return hour;              //返回一个值}}class Program
{static void Main(){MyClass mc=new MyClass();Console.WriteLine("Hour:{0}",mc.GetHour());}
}

image

返回语句和void方法

在上一节,我们看到有返回值的方法须包含返回语句。void方法不需要返回语句。当控制
流到达方法体的关闭大括号时,控制返回到调用代码,并且没有值被插入到调用代码中。

不过,当特定条件符合的时候,我们常常会提前退出方法以简化程序逻辑。
可以在任何时候使用下面的返回语句退出方法,不带参数:
return;
这种形式的返回语句只能用于用void声明的方法。
例如,下面的代码展示了一个名为SomeMethod的void方法的声明。它可以在三个可能的地
方返回到调用代码。前两个在语句分支内。if语句将在第10章阐述。最后一个是方法体的结
尾处。

void SomeMethod()
{...if(SomeCondition)     //如果...return;           //返回到调用代码...if(OtherCondition)    //如果...return;           //返回到调用代码...                   //默认返回到调用代码
}

image
下面的代码展示了一个带有一条返回语句的void方法示例。该方法只有当时间是下午的时
候才写出一条消息,如图6-5所示,其过程如下。

首先,方法获取当前日期和时间(现在不用理解这些细节)。
如果小时小于12(也是在中午之前),那么执行return语句,不在屏幕上输出任何东
西,直接把控制返回给调用方法。
如果小时大于等于12,则跳过return语句,代码执行计WriteLine语句,在屏幕上输出信息。

class MyClass
{void TimeUpdate(){DateTime dt=DateTime.Now;    //获取当前时间日期和时间if(dt.Hour<12)               //若小时数小于12return;                 //则返回Console.WriteLine("It's afternoon!");  //否则,输出消息}static void Main(){MyClass mc=new MyClass();    //创建一个类实例mc.TimeUpdate();             //调用方法}
}

image

使用void返回类型的返回语句

http://www.dtcms.com/a/170711.html

相关文章:

  • spring cloud 与 cloud alibaba 版本对照表
  • HTML04:图像标签
  • 组合模式(Composite Pattern)
  • 【计算机网络】HTTP中GET和POST的区别是什么?
  • 工业大模型:从设备诊断到工艺重构
  • spring中的@ComponentScan注解详解
  • Oracle VirtualBox 在 macOS 上的详细安装步骤
  • 数据同步实战篇
  • HTTP协议(一)
  • ios systeam introduction
  • 【SimSession】1:将视频发送逻辑与 libuv 事件循环集成是一个典型的并发设计问题
  • Android第三次面试总结之activity和线程池篇(补充)
  • 软件架构之旅(6):浅析ATAM 在软件技术架构评估中的应用
  • Webug4.0通关笔记12- 第17关 文件上传之前端拦截(3种方法)
  • OpenHarmony平台驱动开发(一),ADC
  • 人工智能(AI)未来会产生意识吗?
  • Flink基础整理
  • Python速成系列二
  • React hooks详解
  • 新能源实验室电磁兼容设计优化方案论述
  • HTML02:网页基本信息
  • 苍穹外卖部署到云服务器使用Docker
  • 软考 系统架构设计师系列知识点之杂项集萃(52)
  • 观察者模式(Observer Pattern)详解
  • 自由学习记录(58)
  • n8n工作流自动化平台的实操:利用本地嵌入模型,完成文件内容的向量化及入库
  • 从 0 到 1:使用 Jetpack Compose 和智能自动化实现高效 Android UI 开发
  • 2025 年如何使用 Pycharm、Vscode 进行树莓派 Respberry Pi Pico 编程开发详细教程(更新中)
  • HTML学习笔记(7)
  • PHP的include和require