当前位置: 首页 > 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返回类型的返回语句

相关文章:

  • 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详解
  • 新能源实验室电磁兼容设计优化方案论述
  • 端午小长假前夜火车票今日开抢,多个技巧提高购票成功率
  • “AD365特应性皮炎疾病教育项目”启动,助力提升认知与规范诊疗
  • Offer触手可及,2025上海社会组织联合招聘专场活动正寻找发光的你
  • 病重老人被要求亲自取钱在农业银行门口去世?株洲警方介入
  • 为何选择上海?两家外企提到营商环境、人才资源……
  • 首个偏头痛急性治疗药物可缓解前期症状