C#学习笔记 控制流

2023-11-20

C#是一门命令式的语言,默认语句以顺序方式执行。利用控制流语句可以改变程序的执行流程,以实现复杂的算法。

条件语句

if语句

如果如果是单条件判断,可以使用if语句。if语句的执行体,既可以是单条语句也可以是由{} 花括号括起来的语句块。

bool b = false;
if (b)
{
    //当b为真时执行的语句
}
else
    //当b为假是执行的语句

else 子句是可选的,另外还可以if 嵌套,来执行多重判断。

switch语句

switch语句常用来从一组互斥的选项中选择一个分支执行。C#的switch语句要求每个分支后面都必须有break 语句,因此更加安全。

switch(condition)
{
    case 1:
        //做一些事情
        break;
    case 2:
        //做一些事情
        break;
    default:
        //做一些事情
        break;
}

如果有两个分支需要执行一样的代码,可以写成这样:

case 1:
case 2:
    //做一些事情
    break;

switch 语句中case 的顺序无关紧要,但是case 后面的常量值不能相同。如果没有任何一个匹配,就会执行default 分支的语句。

循环语句

for循环

for循环常用来执行次数已知的循环,形式如下。注意增量表达式的计算是在循环体执行完成之后才计算的,然后执行下一次循环。

for(初始化表达式;测试条件;增量表达式)
{
    //循环体
}

例如打印九九乘法表的语句:

class Program
   {

       static void Main(string[] args)
       {
           for (int i = 1; i <= 9; ++i)
           {
               for (int j = 1; j <= i; ++j)
               {
                   Console.Write($"{j}*{i}={i * j}\t");
               }
               Console.WriteLine();
           }
       }
   }

while循环

while 循环形式如下:

while(测试条件)
{
    循环体
}

注意循环体中必须有能够改变测试条件的增量语句,不然就会变成死循环。

do-while循环

do-while 循环形式如下:

do
{
    循环体
} while(测试变量);

while循环差不多,不过需要注意的是它是先执行循环体然后判断条件。同样,在循环体中应该有能够改变执行条件的增量语句。

foreach循环

foreach 循环常用来迭代某个集合中的所有项。能够使用foreach 循环迭代的对象,都应该实现了IEnumberable接口。

int []array={1,2,3,4,5};
foreach(int i in array)
{
    Console.WriteLine(i);
}

需要注意的是,在foreach 循环中,不能改变集合中的项。如果想要改变值的话,应该使用for 循环。

跳转语句

goto语句

goto语句可以用来无条件跳转到另一个标签的位置。

Label:
    //做一些事情
    //另外一些事情
goto Label; //这会跳转到Label标签处。

需要注意的是,goto 语句不能跳到其它代码块中,不能跳出类的范围,也不能跳出finally 语句块。由于goto 常常会破坏合理的编程结构,因此不推荐在C#这样的面向对象语言中使用goto语句。

break语句

break语句用来跳出当前的代码块,比如switch 语句中的case 分支,或者是一些循环语句。如果有箱套的代码块,那么使用break只会跳出当前层的代码块。另外,如果break语句没有放在switch语句或者循环语句中,就会发生错误。

return语句

return语句用于退出方法。如果方法没有返回值,那么就使用空的return语句。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#学习笔记 控制流 的相关文章

  • 如何从对Web服务发出的请求中获取客户端IP地址

    我的 IIS 中托管有一个 Web 服务 当客户端直接使用我的服务时 我需要找出客户端 IP 地址 like http MyIpAddress MyApplication MyWebServiceClass asmx http MyIpAd
  • 如何将动态数据写入 MVC 3 Razor 中的页面布局?

    我有带有 Razor 引擎的 MVC 3 C 项目 将动态数据写入 Layout cshtml 的方法和最佳实践是什么 例如 也许我想在网站的右上角显示用户名 该名称来自会话 数据库或基于用户登录的任何内容 更新 我也在寻找将某些数据渲染到
  • ptrace和waitpid有什么关系?

    我正在练习使用ptrace但我不太了解它和之间的关系waitpid 这是我的测试程序 int main int argc char argv pid t pid 22092 if ptrace PTRACE ATTACH pid NULL
  • 如何准备sql语句并绑定参数?

    不幸的是 文档 http www sqlite org完全缺乏示例 这真的很奇怪 就好像它假设所有读者都是优秀的程序员一样 然而 我对C 并且无法真正从文档中弄清楚如何真正准备和执行语句 我喜欢它的实施方式PDO for PHP 通常 我只
  • 弹出 x86 堆栈以访问函数 arg 时出现分段错误

    我正在尝试链接 x86 程序集和 C 我的C程序 extern int plus 10 int include
  • 如何进行Visual Studio格式字典初始化?

    所有 Visual Studio 也包括 2012 不格式化以下内容 messageProcessor new Dictionary
  • 使用正则表达式解析日志文件

    我目前正在为我们的内部日志文件 由 log4php log4net 和 log4j 生成 开发一个解析器 到目前为止 我有一个很好的正则表达式来解析日志 除了一个烦人的一点 一些日志消息跨越多行 我无法正确匹配 我现在的正则表达式是这样的
  • C# 事务中的事务

    我正在使用 C 将发票的平面文件导入到数据库中 如果遇到问题 我将使用 TransactionScope 回滚整个操作 这是一个棘手的输入文件 因为一行不一定等于一条记录 它还包括链接记录 发票将包含标题行 行项目和总计行 有些发票需要跳过
  • 如何在控制器中使用多个 DBContext

    如何在控制器中使用多个 DBContext 我尝试以不同的方式重载构造函数 一些控制器 public C1 DBContext1 a DBContext2 b DBContext3 c public C1 DBContext1 a publ
  • 如何检查给定调用站点的重载决策集

    如何检查重载解析集 我在多个调用站点中使用了 4 个相互竞争的函数 在一个调用站点中 我期望调用一个函数 但编译器会选择另一个函数 我不知道为什么 这不是微不足道的 为了了解发生了什么 我正在使用enable if disable if打开
  • WPF ComboBox 中具有本地化名称的枚举

    我有一个列出枚举的组合框 enum StatusEnum Open 1 Closed 2 InProgress 3
  • Moq - 是否可以在不使用 It.IsAny 的情况下设置模拟

    我一直使用 Moq 进行单元测试 有时我会嘲笑有很多参数的方法 想象一下这样的方法 public class WorkClient public void DoSomething string itemName int itemCount
  • 使用 (float&)int 进行类型双关可以正常工作,(float const&)int 会像 (float)int 一样转换吗?

    VS2019 发布 x86 template
  • VS C# 中的依赖地狱,找不到依赖项

    我创建了一个图表 C 库 我们称之为chartlibrary 它本身依赖于多个第三方 dll 文件 在另一个可执行项目中 我们称之为chartuser 我参考了chartlibrary项目 两个项目位于 Visual Studio 中的同一
  • C# 从今天起 30 天

    我需要我的应用程序从今天起 30 天后过期 我会将当前日期存储在应用程序配置中 如何检查应用程序是否已过期 我不介意用户是否将时钟调回来并且应用程序可以正常工作 用户太愚蠢而不会这样做 if appmode Trial string dat
  • 提升shared_from_this<>()

    有人可以用几句话概括一下如何提升shared from this lt gt 应该使用智能指针 特别是从使用绑定函数在 io service 中注册处理程序的角度来看 编辑 一些回复要求提供更多背景信息 基本上 我正在寻找 陷阱 即人们使用
  • 在 C++ 中什么时候首选传递指针而不是引用传递?

    我可以想象一种情况 其中输入参数可以为 NULL 以便首选传递指针而不是传递引用 有人可以添加更多案例吗 在传递的对象实际上将被修改的情况下 有些人更喜欢传递指针 当对象通过引用传递时 它们使用 pass by const referenc
  • SQL Server CE 不兼容的数据库版本

    我有一个 SQL Server CE 4 0 数据库 sdf文件 当我尝试从我的应用程序 WPF 对数据库进行查询时 出现以下错误 数据库版本不兼容 如果这是兼容文件 请运行修复 其他情况请参考文档 数据库版本 4000000 请求的版本
  • 使用 List.Contains 方法为 LINQ 构建表达式树

    Problem 我正在重构一些LINQ查询我们的 Web 应用程序中的多个报告 并且我尝试将一些重复的查询谓词移至它们自己的中IQueryable扩展方法 以便我们可以将它们重新用于这些报告以及将来的报告 正如您可能推断的那样 我已经重构了
  • 在地图上使用 find

    如何使用 find 和 aconst iterator如果你有一个地图定义为 typedef std pair

随机推荐

  • jenkins安装出现该实例似乎已离线等报错和如何卸载干净Jenkins的解决方案

    前段时间在准备使用Jenkins来实现Android自动化打包 但是在安装Jenkins的过程中出现了问题 在安装过程中出现 Jenkins实例似乎已离线 需要我配置代理 还有一个离线安装的文档 可是根据文档并没有明确说明怎么配置 然后我就
  • WPS Office 漏洞复现

    前言 此文章仅用于技术交流 严禁用于对外发起恶意攻击 一 产品简介 WPS Office是金山软件公司开发的 中国领先的办公软件套件 包含文字 表格和演示三个组件 支持创建 编辑各种文档 并具有强大的数据计算 统计和分析功能 其特点包括全面
  • Git提交代码步骤

    目录 1 Git提交代码步骤 1 1 第1步 同步远程仓库代码 git pull 1 2 第1步 查看当前状态 git status 1 3 第2步 提交代码到本地git缓存区 git add 1 4 第3步 推送代码到本地git库 git
  • 让csdn中的静态图动起(firemonkey)

    缘起 错过了登月50周年的日子 7 20 看到了如下卡通图童心大发 让它动起来 https blog csdn net csdnnews article details 96403350 代码下载 链接 https pan baidu co
  • CI/CD

    CICD 是 持续集成 Continuous Integration 持续交付和持续部署 Continuous Deployment 简称 指在开发过程中自动执行一系列从开发到部署的过程中 尽量减少人工的介入 CI CD AND CD CI
  • C++学习笔记12:输入输出流实例整理(文本文件读写,二进制文件读写,一组数据的文件读写,随机访问文件实例

    这也太难记了555老阔疼 文件读写示例 include
  • Kubernetes APIServer,Etcd,controller manager,scheduler 高可用原理

    高可用背后的原理 这两个月和博云合作的项目是要用于客户生产环境的 这个和我以前做的东西有很大的不同 所有基础架构必须给出高可用的解决方案 在这之前我只做过一些流量较小的用户产品或者一些原型项目 一开始基础架构都只给出了单节点的解决方案 结果
  • 微信小程序--给头像添加logo(生成海报同理)

    实现给图片添加logo或者生成海报 其原理是使用canvas 用canvas绘制出想要的图片进行保存 1 在wxml文件中添加canvas canvs层级太高 所以将它定位到屏幕外 不影响页面
  • 嵌入式资源网站

    原题地址 http blog csdn net ce123 article details 6724127 一 MailList 1 MailList大全 网址 http news gmane org 描述 可以查到绝大部分开源项目的Mai
  • LVGL学习(3):页面切换原理和页面管理实现

    在LVGL中 大多情况下是有多个页面的 一般来说页面的切换有两种情况 删除当前的页面 创建新页面加载 保留当前的页面 创建新页面加载 我们来分析一下这两种情况 比如页面1有一个列表框 有三个选项 每个选项对应进入一个页面 假设此时我们的焦点
  • VScode 怎么设置成中文

    1 打开 vscode 2 按快捷键 Ctrl Shift P 3 在 vscode 顶部会出现一个搜索框 4 在搜索栏输入 Configure Display Language 然后回车 5 vscode 里面就会打开一个语言配置文件 6
  • // SPDX-License-Identifier: MIT

    上述声明是指明你写的智能合约采用什么样的对外开放标准 该标准规定了别人是否拥有各种使用权利 其中 MIT 标准说明其他人可以随便用该源码 但出问题不负责
  • SQL各种日期转换代码大全

    select CONVERT varchar getdate 120 2004 09 12 11 06 08 select replace replace replace CONVERT varchar getdate 120 200409
  • html5 亲子模板,亲子阅读手抄报精美模板

    陪着孩子一起读 这点至关重要 不要丢下孩子一人读书 这样孩子很快就会失去读书的兴趣 今天学习啦小编给大家带来了亲子阅读手抄报精美模板 供大家阅读和参考 亲子阅读手抄报图片欣赏 亲子阅读手抄报图片1 亲子阅读手抄报图片2 亲子阅读手抄报图片3
  • 4、动态代理的缓存机制

    1 背景 上一节大致介绍了Proxy动态代理的原理 从几个疑问上面分析 这一节介绍一下动态代理的缓存机制 网上的资源比较少 可以怀着下面几个问题阅读源码 为什么要缓存 缓存的内容是什么 哪里调用的缓存 缓存的实现机制 缓存的过期机制 2 属
  • PTP/IP协议

    PTP IP PTP over IP 是一个通过IP连接 建立在 Picture Transfer Protocol PTP 上的传输层 我之所以在了解这个东西是因为有一台 Nikon 相机支持 WLAN 和手机传输相片 但是APP设计得极
  • 读取Properties配置文件

    读取Properties文件 File ReadHttpUrlProperties java User jiangefng li Date 2015年5月22日10 30 56 public class ReadHttpUrlPropert
  • R语言与多元线性回归方程及各种检验

    R语言与多元线性回归方程及各种检验 文章目录 R语言与多元线性回归方程及各种检验 一 模型建立 二 多重共线性 1 产生的背景 2 多重共线性的检验 1 简单相关系数法 2 方差膨胀因子 vif 法 3 矩阵 X T X
  • 一、eladmin学习笔记之common层相关注解上

    文章目录 eladmin使用的相关注解 1 Inherited 2 Documnet 3 Target 用来表示注解的作用范围 4 Retention 5 Component 6 RequestMapping 8 AliasFor 9 Ma
  • C#学习笔记 控制流

    C 是一门命令式的语言 默认语句以顺序方式执行 利用控制流语句可以改变程序的执行流程 以实现复杂的算法 条件语句 if语句 如果如果是单条件判断 可以使用if语句 if语句的执行体 既可以是单条语句也可以是由 花括号括起来的语句块 bool