码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C# 图解教程 第5版 —— 第10章 语句


    文章目录

      • 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;
    
    • 1
    • 该表达式将 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
  • 相关阅读:
    设计模式-10--多例模式(Multition pattern)
    用广搜和动态规划写个路径规划程序
    Java集合Map接口详解——含源码分析
    【最全最详细索引失效】索引失效的10种场景,数据库优化
    C#9.0记录类型
    第七章 查找
    Json Schema简介和Json Schema的高性能.net实现库 LateApexEarlySpeed.Json.Schema
    Docker以只读挂载磁盘命令
    LeetCode(力扣)455. 分发饼干Python
    [机缘参悟-76]:深度思考-职场中注意事项与大忌-员工版
  • 原文地址:https://blog.csdn.net/zheliku/article/details/134091468
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号