【从零开始入门unity游戏开发之——C#篇10】循环结构——while、do-while、for、foreach的使用

文章目录

  • 一、`while` 循环
    • 1、语法:
    • 2、示例:
  • 二、 `do-while` 循环
    • 1、语法:
    • 2、示例:
  • 三、`for` 循环
    • 1、语法:
    • 2、示例:
  • 四、`foreach` 循环
    • 1、语法:
    • 2、示例:
  • 五、总结对比
  • 六、注意事项
  • 七、使用场景
  • 八、性能考虑
  • 专栏推荐
  • 完结

一、while 循环

while 循环是最基础的循环类型之一。它会在每次循环前检查条件,如果条件为 true,就会执行循环体的代码。适用于循环次数未知,但你需要根据某个条件来控制是否继续循环的场景。

1、语法:

while (condition)
{// 循环体
}
  • condition:一个布尔表达式,决定循环是否继续。
  • 如果 conditiontrue,执行循环体;如果为 false,退出循环。

2、示例:

int i = 1;
while (i <= 5)
{Console.WriteLine(i);i++;
}

输出:

1
2
3
4
5

二、 do-while 循环

do-while 循环与 while 循环非常相似,不同之处在于 do-while 循环会至少执行一次循环体,因为条件检查是在循环体执行之后进行的。

1、语法:

do
{// 循环体
} while (condition);
  • 循环体首先会执行一次,然后再检查条件 condition 是否为 true,如果为 true,则继续执行循环;如果为 false,则退出循环。

2、示例:

int i = 1;
do
{Console.WriteLine(i);i++;
} while (i <= 5);

输出:

1
2
3
4
5

即使在循环开始前 i 的初始值是 1,do-while 也会先执行一次,之后才会判断条件。


三、for 循环

for 循环通常用于知道循环次数的场景。它将初始化、条件判断、增量操作(或减量操作)集中在一行代码中,结构比较简洁。

1、语法:

for (initialization; condition; increment/decrement)
{// 循环体
}
  • initialization:初始化部分,通常用于定义和初始化循环变量。
  • condition:判断条件,每次循环前都会检查,如果为 true,则继续执行循环。
  • increment/decrement:增量或减量操作,通常用于更新循环变量。

2、示例:

for (int i = 1; i <= 5; i++)
{Console.WriteLine(i);
}

输出:

1
2
3
4
5

四、foreach 循环

foreach 循环用于遍历集合、数组或其他可以枚举的对象。它是遍历集合数据时非常方便且易于使用的循环结构,适用于遍历数据时不需要改变集合中的元素。

ps:当然,目前我们还没有讲集合、数组、枚举的知识,看不懂也没关系,了解一下就行了,后面会再细讲

1、语法:

foreach (var item in collection)
{// 循环体
}
  • item:表示集合中的当前元素。
  • collection:是一个集合或数组。

2、示例:

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

输出:

1
2
3
4
5

foreach 循环不需要手动处理索引,自动遍历集合中的每个元素,非常适合用于读取数据而不修改数据的情况。


五、总结对比

循环类型使用场景特点示例
while循环次数未知,且根据条件决定是否继续循环先判断条件,满足条件后执行循环体while (i <= 5) { … }
do-while至少需要执行一次循环体,条件判断放在后面不管条件是否为 true,至少执行一次循环体do { ... } while (i <= 5)
for知道循环次数,控制循环变量的增减逻辑清晰循环变量初始化、条件判断、增减操作都集中在一行for (int i = 0; i < 10; i++) { ... }
foreach遍历集合或数组,简化了遍历逻辑自动遍历集合中的每个元素,不能修改集合中的元素foreach (var item in collection) { ... }

六、注意事项

  • whiledo-while 的区别while 循环在执行前先检查条件,而 do-while 循环在执行后检查条件,后者保证循环体至少执行一次。
  • for 的灵活性for 循环在控制循环的初始化、条件判断和增量操作方面非常灵活,适用于处理已知循环次数的场景。
  • foreach 适用场景foreach 是遍历集合和数组的最佳选择,语法简洁,避免了手动控制索引,适用于只读取元素的情况。

七、使用场景

  • while:当你不确定循环次数,而是需要依赖某个条件(比如输入或状态)来决定何时退出循环。
  • do-while:当你至少需要执行一次循环体,不管条件如何时使用。
  • for:当你知道循环次数,或者需要控制循环的增量、初始化和结束条件时,使用 for 循环非常合适。
  • foreach:当你要遍历一个集合或数组,而不关心索引时,使用 foreach 是最简便和安全的选择。

八、性能考虑

  • foreach 在遍历数组或集合时,通常比传统的 for 循环稍慢,但这种性能差异对小规模数据集来说并不明显。对于大规模数据集合,for 循环可能会有略微的性能优势,特别是在需要通过索引访问元素时。

专栏推荐

地址
【从零开始入门unity游戏开发之——C#篇】
【从零开始入门unity游戏开发之——unity篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架开发】

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据分析】数据结构数据内容概述

文章目录 表格结构数据特征数据类别结构化数据表格结构数据层级表格结构的数据类型单元格的格式属性 表格结构数据获取方法从企业后台数据库系统获取后台数据库系统获取数据流程前端操作平台获取从企业外部渠道获取数据 表格结构数据使用方法单元格值的引用方法单元格区域值的引…

控制策略和算法:两者的类型、应用领域

目录 控制策略类型&#xff1a; 控制算法类型&#xff1a; 应用领域&#xff1a; 其他学术知识 控制策略类型&#xff1a; 开环控制&#xff1a; 在没有反馈的情况下&#xff0c;控制信号是根据对系统模型的预测或设定目标生成的。适用于系统动态特性已知且外部干扰较小的情…

Nacos 3.0 考虑升级到 Spring Boot 3 + JDK 17 了!

Nacos 由阿里开源&#xff0c;是 Spring Cloud Alibaba 中的一个重要组件&#xff0c;主要用于发现、配置和管理微服务。 由于 Spring Boot 2 的维护已于近期停止&#xff0c;Nacos 团队考虑升级到 Spring Boot 3 JDK 17&#xff0c;目前正在征求意见和建议。 这其实是一件好…

【笔记】RT-Thread Studio+STM32CubeMX联合开发,使用SPI+DMA驱动WS2812B RGB灯条,实现单独操控任意灯珠。

硬件平台&#xff1a;STM32L431RCT6 软件版本&#xff1a;RT-Thread Studio 2.2.8&#xff0c;STM32CubeMX 6.12.0 RT-Thread版本&#xff1a;4.1.0 言&#xff1a;之前写过一篇WS2812B的教程&#xff0c;但是最近扒出来用发现不能单独点亮或者熄灭特定位置的灯珠&#xff0c;只…

Vue 中实现节点对齐

Vue 如何将两个 Dom 节点进行对对齐&#xff0c;在前端页面中如何快速的对两个节点元素进行对齐操作&#xff0c;最简单的方式就是使用 Postion&#xff1a;Relative 加 Absolute 实现两个元素的相对位置。今天使用 dom-align 库实现节点对齐&#xff0c;实现以下效果&#xff…

计算机网络-HTTP协议

HTTP HTTP是一种不保存状态&#xff0c;即无状态的协议。HTTP协议自身不对请求和响应之间的通信进行保存。为了保存状态因此后面也有一些技术产生比如Cookies技术。 HTTP是通过URI定位网上的资源&#xff0c;理论上将URI可以访问互联网上的任意资源。 如果不是访问特定的资源…

端到端自动驾驶大模型:视觉-语言-动作模型 VLA

模型框架定义、模型快速迭代能力是考查智驾团队出活能力的两个核心指标。在展开讨论Vision-Language-Action Models(VLA)之前&#xff0c;咱们先来讨论端到端自动驾驶大模型设计。 目录 1. 端到端自动驾驶大模型设计 1.1 模型输入设计 1.2 模型输出设计 1.3 实现难点分析 …

NLP 分词技术浅析

一、NLP 分词技术概述 &#xff08;一&#xff09;定义 自然语言处理&#xff08;NLP&#xff09;中的分词技术是将连续的文本序列按照一定的规则切分成有意义的词语的过程。例如&#xff0c;将句子 “我爱自然语言处理” 切分为 “我”、“爱”、“自然语言处理” 或者 “我…

深度学习面试相关-2024.12.15记录

深度学习 面试相关- 2024.12.15记录 目录 深度学习 面试相关- 2024.12.15记录整体常问问题1数学基础1.1 概率统计1.2 线代 2机器学习算法2.1 深度学习算法2.2 机器学习算法 整体常问问题 https://www.nowcoder.com/discuss/353154899112304640 1数学基础 1.1 概率统计 htt…

SEO初学者-搜索引擎如何工作

搜索引擎基础搜索引擎是如何建立索引的搜索引擎如何对网页进行排名搜索引擎是如何个性化搜索结果的 搜索引擎的工作方式是使用网络爬虫抓取数十亿个页面。爬虫也称为蜘蛛或机器人&#xff0c;它们在网络上导航并跟踪链接以查找新页面。然后&#xff0c;这些页面会被添加到搜索引…

构建centos docker基础镜像

1、介绍 比较老的版本docker镜像&#xff0c;不太好找&#xff0c;可以尝试自己构建 各版本构建基础镜像方法不太一样&#xff0c;方式也不同&#xff0c;自己尝试&#xff0c;本文只介绍了我自己的尝试 2、构建centos5.11 docker镜像 准备iso文件 &#xff08;1&#xff09;安…

多曝光融合中无监督学习方法主导的深度思考

在计算机视觉领域&#xff0c;多曝光融合一直是一个备受关注的研究方向。这项技术旨在将同一场景在不同曝光条件下拍摄的多张图像合成为一张包含完整动态范围信息的图像。近年来&#xff0c;深度学习方法在这个领域取得了显著进展&#xff0c;但有一个有趣的现象值得我们深入探…

Linux脚本语言学习--上

1.shell概述 1.1 shell是什么&#xff1f; Shell是一个命令行解释器&#xff0c;他为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序&#xff0c;用户可以使用Shell来启动&#xff0c;挂起&#xff0c;停止甚至是编写一些程序。 Shell还是一个功能相当强大…

活动预告|云原生创新论坛:知乎携手 AutoMQ、OceanBase、快猫星云的实践分享

近年来&#xff0c;云原生技术迅猛发展&#xff0c;成为企业数字化转型的关键动力&#xff0c;云原生不仅极大地提升了系统的灵活性和可扩展性&#xff0c;还为企业带来了前所未有的创新机遇。 12 月 28 日 知乎携手 AutoMQ、OceanBase 和快猫星云推出“云原生创新论坛”主题的…

XXE靶场

XXE-lab 靶场 靶场网址&#xff1a;http://172.16.0.87/ 第一步我们看到网站有登录框我们试着用 bp 去抓一下包 将抓到的包发到重放器中 然后我们构建palody <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "php://filter/readconvert.base64-encode/resourceC:/flag/fla…

djiango DRF的使用

djiango DRF的使用 一 、初始 DRF序列化环境安装环境配置数据模型定义定义DRF序列化模型对象 二 、DRF请求和响应请求对象&#xff08;Request objects&#xff09;响应对象&#xff08;Response objects&#xff09;状态码&#xff08;Status codes&#xff09;包装&#xff0…

【BUG】记一次context canceled的报错

文章目录 案例分析gorm源码解读gin context 生命周期context什么时候cancel的什么时候context会被动cancel掉呢&#xff1f; 野生协程如何处理 案例分析 报错信息 {"L":"ERROR","T":"2024-12-17T11:11:33.0050800","file"…

Qt WORD/PDF(四)使用 QAxObject 对 Word 替换(QWidget)

关于QT Widget 其它文章请点击这里: QT Widget 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 姊妹篇: Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 操作 Qt WORD/PDF&#xff08;二…

使用nvm对node进行多版本管理

1.nvm下载及安装 下载链接 下载完成后&#xff0c;对文件进行解压安装&#xff0c;按照提示一步步安装&#xff0c;如果电脑上之前有安装过node&#xff0c;需要先卸载&#xff0c;再进行安装。 按照提示完成安装。 2.设置环境变量 可以现在C:\Users\name\AppData\Roamin…

基于Socket实现客户端和服务端的Tcp通信(C#)

0.前言 使用C#和Unity实现复刻Liar’s bar中的功能 软件开发大作业 本系列文章用于记录与分享开发过程中使用到的知识点&#xff0c;以及常见错误 本文主要描述有关网络编程的内容 目录 0.前言1.使用Socket搭建Server1.1Server端的Socket连接1.2 Server端接收Client的信息1.3…