C# 图解教程 第5版 —— 第10章 语句

news2024/12/28 23:13:17

文章目录

    • 10.1 什么是语句(*)
    • 10.2 表达式语句
    • 10.3 控制流语句
    • 10.4 if 语句(*)
    • 10.5 if ... else 语句(*)
    • 10.6 while 循环(*)
    • 10.7 do 循环(*)
    • 10.8 for 循环
      • 10.8.1 for 语句中变量的作用域
      • 10.2 初始化和迭代表达式中的多表达式(*)
    • 10.9 switch 语句
      • 10.9.1 分支示例(*)
      • 10.9.2 其他类型的模式表达式(*)
      • 10.9.3 switch 语句的补充
    • 10.10 跳转语句(*)
    • 10.11 break 语句(*)
    • 10.12 continue 语句(*)
    • 10.13 标签语句
      • 10.13.1 标签
      • 10.13.2 标签语句的作用域
    • 10.14 goto 语句
    • 10.15 using 语句
      • 10.15.1 包装资源的使用
      • 10.15.2 using 语句的示例(*)
      • 10.15.3 多个资源和嵌套
      • 10.15.4 using 语句的另一种形式
    • 10.16 其他语句

10.1 什么是语句(*)

10.2 表达式语句

​ 表达式返回值有副作用,对许多表达式求值只是为了它们的副作用。

x = 10;
  • 该表达式将 10 赋给 x,虽然这可能是语句的主要动机,但却归类为副作用。
  • 设置 x 值后,表达式返回 x 的新值 10,但这个结果被忽略了。

10.3 控制流语句

  • 条件执行语句
    • if
    • if … else
    • switch
  • 循环语句
    • while
    • do
    • for
    • foreach
  • 跳转语句
    • break
    • continue
    • return
    • goto
    • throw

10.4 if 语句(*)

10.5 if … else 语句(*)

10.6 while 循环(*)

10.7 do 循环(*)

10.8 for 循环

​ 如果 TestExpr 为空,则测试一直返回 true。

image-20231028141924788
图10.1 for 循环语句

10.8.1 for 语句中变量的作用域

​ 任何声明在 initializer 中的变量只在该 for 语句的内部可见。

image-20231028142238282
图10.2 for 语句中变量的作用域

10.2 初始化和迭代表达式中的多表达式(*)

10.9 switch 语句

image-20231028142717609 image-20231028142753409
图10.3 switch 语句的结构
  • C# 7.0 允许 TestExpr 为任何类型。
  • switch 语句使用深度比较。
    • 如果 TestExpr 和 PatternExpression 均为整数类型,C# 使用 == 比较。
    • 否则,使用静态方法 Object.Equals(TestExpr, PatternExpression) 比较。
  • 每个分支块遵守“不穿过规则”。
    • 分支块中的语句不能达到终点并进入下一个分支块。
    • goto 不能和 switch 一起使用。
  • default 分支可选,如果包括则必须以一条跳转语句结束。
image-20231028143214511
图10.4 穿过 switch 语句的控制流

10.9.1 分支示例(*)

10.9.2 其他类型的模式表达式(*)

10.9.3 switch 语句的补充

​ 可以将多个分支标签附加到任意分支:

image-20231028143711563
图10.5 使用多个分支示例

10.10 跳转语句(*)

10.11 break 语句(*)

10.12 continue 语句(*)

10.13 标签语句

image-20231028143954306
图10.6 标签语句

​ 标签语句仅执行 Statement 部分,就如同标签不存在一样。

10.13.1 标签

  • 标签有自己的声明空间,可与变量重名。
  • 标签名不能是关键字。
  • 重叠范围内标签名不能重复。

10.13.2 标签语句的作用域

​ 标签语句的作用域为:

  • 其声明所在的块。
  • 声明块内部嵌套的块。

​ 图 10.7 阴影部分展示了 increment 标签语句的作用域。

image-20231028144250525
图10.7 标签的作用域包括嵌套的块

10.14 goto 语句

  • goto 可以跳入其所在块内的任何标签语句。
  • goto 可以跳出到任何嵌套它的块内。
  • goto 不能跳入所在块的内部快(避免部分条件判断缺失造成程序紊乱)。

​ 使用 goto 语句是非常不好的!

10.15 using 语句

​ 资源:指实现了 System.IDisposable 接口的类或结构。该接口仅有一个 Dispose 的方法。

​ 图 10.8 展示了使用资源的阶段。如果使用资源时发生运行时错误,那么处置资源的代码可能无法执行。

  1. 分配资源。
  2. 使用资源。
  3. 处置资源。
image-20231028145327875
图10.8 使用资源的阶段

10.15.1 包装资源的使用

​ using 语句的第一种形式如图 10.9 所示。

  • 圆括号内分配资源。
  • Statement 使用资源。
  • using 语句隐式产生处置资源的代码。
image-20231028145723589
图10.9 using 语句的第一种形式

​ 使用 using 语句的效果如下:

  1. 分配资源。
  2. 将 Statement 放入 try 块。
  3. 创建资源的 Dispose 方法,并放入 finally 块。
image-20231028145905296
图10.10 using 语句的效果

10.15.2 using 语句的示例(*)

10.15.3 多个资源和嵌套

​ 使用相同类型的多个资源语法如下:

image-20231028150027685
图10.11 使用多个资源的 using 语句

10.15.4 using 语句的另一种形式

image-20231028150135076 image-20231028150210187
图10.12 using 语句的第二种形式
  • 这种形式也能确保使用完资源后调用 Dispose 方法。
  • 后续代码可能仍使用该资源,这将导致状态错误,因此不推荐使用该形式。
image-20231028150426907
图10.13 资源声明在 using 语句之前

10.16 其他语句

表10.1 在其他章中阐述的语句
image-20231028150520397

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1143882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos7虚拟机部署苍穹私有云环境记录

物理机建议16G内存以上,不然安装gpass过程中带不动虚拟机 步骤1:迅雷下载centos7.9镜像文件,并创建虚拟机,手动安装 http://ftp.sjtu.edu.cn/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso 后面安装gpass时会有校验…

一文1800字解读性能指标与性能分析

性能测试监控关键指标: 1、系统指标:与⽤户场景与需求直接相关的指标 2、服务器资源指标:硬件服务器的资源使⽤情况的指标 3、JAVA应⽤ : JAVA应⽤程序在运⾏时的各项指标 4、数据库:数据库服务器运⾏时需要监控的指标 5、压测机资源指标:测试机在模拟⽤户负载时的资源使⽤…

经典目标检测神经网络 - RCNN、SSD、YOLO

文章目录 1. 目标检测算法分类2. 区域卷积神经网络2.1 R-CNN2.2 Fast R-CNN2.3 Faster R-CNN2.4 Mask R-CNN2.5 速度和精度比较 3. 单发多框检测(SSD)4. YOLO 1. 目标检测算法分类 目标检测算法主要分两类:One-Stage与Two-Stage。One-Stage与…

python3+requests+unittest实战详解(一)

1、环境准备 python3 pycharm编辑器 2、框架目录展示 (该套代码只是简单入门,有兴趣的可以不断后期完善) (1)run.py主运行文件,运行之后可以生成相应的测试报告,并以邮件形式发送&#xff1…

如何写好测试用例,看完即会

目的 测试用例这个名词,相信各位从业者已经是熟悉的不能再熟悉了,无论你是从事何种行业,只要是软件测试从业者,测试用例始终贯穿于我们的日常工作中,今天我们就针对设计测试用例的方方面面进行一个详细的介绍。 写好黑…

【华为HCIP | 职业认证考试】821每日一刷

个人名片: 🐼作者简介:一名大三在校生,喜欢编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️ 零…

STM32 ADC数模转换器

STM32 ADC数模转换器 ADC简介 ADC(Analog-Digital Converter)模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 STM32主要是数字电路,数字电路只有高低电平&#xf…

计算机网络重点概念整理-第四章 网络层【期末复习|考研复习】

第四章 网络层 【期末复习|考研复习】 计算机网络系列文章传送门: 第一章 计算机网络概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层 第七章 网络安全 计算机网络整理-简称&缩写 文章目录 第四章 网络层 【期末复习|考研复习…

云计算与ai人工智能对高防cdn的发展

高防CDN(Content Delivery Network)作为网络安全领域的一项关键技术,致力于保护在线内容免受各种网络攻击,包括分布式拒绝服务攻击(DDoS)等。然而,随着人工智能(AI)和大数…

AOSP 编译真机镜像与AVD镜像

硬件设备当然是配置越高越好,虚拟机编译至少需要16G内存300G硬盘空间 配置环境 Ubuntu 最好,安装方式网上一大堆,自行搜索,本文是基于 Ubuntu 22.04.3 LTS 更新&&配置 sudo apt-get update sudo apt-get upgrade sudo ap…

云服务器搭建Zookeeper集群

文章目录 1.集群配置2.zookeeper的群起脚本3. Zookeeper节点的创建和删除相关4. Zookeeper的选举机制 1.集群配置 Zookeeper的集群个数最好保证是奇数个数,因为Zookeeper的选举过程有一个“半数机制”。 5台服务器,可以设置Zookeeper的集群为3或者5&…

世界前沿技术发展报告2023《世界航空技术发展报告》(二)军用飞机技术

(二)军用飞机技术 1.作战飞机1.1 美俄对第五代战斗机进行升级改进1.2 美欧第六代战斗机技术取得新进展1.3 美国B-21隐身轰炸机正式亮相 2.支援飞机2.1 美国空军拟研制翼身融合布局运输/加油机2.2 美欧厂商积极参加北约未来预警机技术研究项目2.3 美国空军…

FPGA时序分析与约束(7)——通过Tcl扩展SDC

一、概述 术语“Synopsys公司设计约束”(又名SDC,Synopsys Design Constraints)用于描述对时序、功率和面积的设计要求,是EDA工具中用于综合、STA和布局布线最常用的格式。本文介绍时序约束的历史概要和SDC的描述。 二、时序约束…

【计算机网络】TCP协议

文章目录 1. TCP报文的结构2. TCP的发送缓冲区和接收缓冲区3. 确保可靠性序列号和确认序列号确认应答超时重传连接管理1️⃣三次握手建立连接2️⃣四次挥手断开连接 4. 提高性能流量控制滑动窗口拥塞控制延迟应答捎带应答 5. 面向字节流6. TCP/UDP对比 概念:TCP&…

threejs(7)-精通粒子特效

一、初识Points与点材质 // 设置点材质 const pointsMaterial new THREE.PointsMaterial(); import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; // 导入动画库 import gsa…

854算法之线性表

周小伦说的建议王道的所有算法题最好都写一下啊,尤其是树的,排序相关的要写一下,然后还有链表,链表有一些反转链表啊一些经典的代码肯定要背的呀,比如说,三种遍历的递归和非递归,怎么找树的宽度…

【C程序设计】用心浇灌<C程序>

目录 数据类型 整数类型 实例 浮点类型 void 类型 类型转换 数据类型 在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统。变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式。 C 中的类型可分为以下几种&…

服务端推送、 server sent event、sse、springboot+sse

SSE(server-sent events) SSE全称server-sent events,翻译过来是服务端发送事件,通常的http请求,客户端请求,服务端返回响应,一次只能返回一个值;SSE使用的http协议,客户端请求后,服…

bbr 的 “最优操作点”

最近做一组测试,我复现了一组结果准备阐释另一个事。先看这个测试结果: 常规的一个 wrk2(expected_latency_timing 改为 actual_latency_timing 计数) 压 nginx 的测试,调整 -R 参数,Req/sec 同步增加,当 Req/sec 不…

(免费领源码) Asp.Net#SQL Server校园在线投票系统10557-计算机毕业设计项目选题推荐

摘 要 随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,校园投票通过网…