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

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.xdnf.cn/news/3897.html

相关文章:

  • 微服务框架选型
  • SpringMVC——第三章:获取请求数据
  • React--》掌握react构建拖拽交互的技巧
  • Linux ACPI - ACPI系统描述表架构(2)
  • 【Redis】Redis常用命令
  • 软件架构之旅(6):浅析ATAM 在软件技术架构评估中的应用
  • 蓝桥杯15届国赛 合法密码
  • 嵌入式系统基础知识
  • 【Hive入门】Hive与Spark SQL集成:混合计算实践指南
  • python使用cv2在图片上标点
  • Python语句类型与格式规范研究
  • RT-Thread studio的驱动5.1.0报错修改
  • c++学习
  • 算法笔记。质数筛算法
  • 一种实波束前视扫描雷达目标二维定位方法——论文阅读
  • 短信登录功能实现(黑马点评)
  • 高中数学联赛模拟试题精选学数学系列第6套几何题
  • QT —— QWidget(1)
  • 白皮解读:数据流通关键技术白皮书【附全文阅读】
  • MNN 支持 DeepSeekVL
  • shell入门
  • 通过Docker部署Prometheus + Grafana搭建监控平台【超详细版】
  • 驱动总裁v2.19(含离线版)驱动工具软件下载及安装教程
  • 实用在线工具箱OmniTools
  • Python硬核革命:从微控制器到FPGA的深度开发指南
  • 多模态大语言模型arxiv论文略读(五十七)
  • Java响应式编程
  • DeepSeek实战--蒸馏
  • Java快速上手之实验六
  • Scrapy框架之【settings.py文件】详解