【从零开始入门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:一个布尔表达式,决定循环是否继续。
- 如果
condition为true,执行循环体;如果为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) { ... } |
六、注意事项
while和do-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
一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

相关文章:
【从零开始入门unity游戏开发之——C#篇10】循环结构——while、do-while、for、foreach的使用
文章目录 一、while 循环1、语法:2、示例: 二、 do-while 循环1、语法:2、示例: 三、for 循环1、语法:2、示例: 四、foreach 循环1、语法:2、示例: 五、总结对比六、注意事项七、使用…...
Spring Boot项目使用虚拟线程
Spring Boot项目启用虚拟线程 开始基本使用先写一个测试方法通过springboot配置项开启虚拟线程 目前存在的问题 开始 虚拟线程正式发布是在JDK21,对于Spring Boot版本选择3以上。 基本使用 关于虚拟线程本身的使用,之前已经介绍过。这里要说的是直接将…...
实现SpringBoot项目嵌入其他项目
很多时候我们需要在项目里面嵌入其他项目或者被其他项目嵌入,如我们开发一个开源项目b,用户需要在自己的项目a嵌入b项目,使用b项目的功能,而且要实现a项目工作最小化,最好实现引入即用。 1.定义b项目的自定义配置 …...
朗致面试---IOS/安卓/Java/架构师
朗致面试---IOS/安卓/Java/架构师 一、面试概况二、总结三、算法题目参考答案 一、面试概况 一共三轮面试: 第一轮是逻辑行测,25道题目,类似于公务员考试题目,要求90分钟内完成。第二轮是技术面试,主要是做一些数据结…...
数字信号处理:FIR滤波器
FIR(Finite Impulse Response,有限脉冲响应)滤波器是一种数字滤波器,其输出信号是输入信号的加权线性组合。FIR滤波器以其线性相位特性和易于设计的优势,广泛应用于信号处理、通信、音频处理等领域。 FIR滤波器的特点…...
鲲鹏麒麟安装Kafka-v1.1.1
因项目需要在鲲鹏麒麟服务器上安装Kafka v1.1.1,因此这里将安装配置过程记录下来。 环境说明 # 查看系统相关详细信息 [roottest kafka_2.12-1.1.1]# uname -a Linux test.novalocal 4.19.148 #1 SMP Mon Oct 5 22:04:46 EDT 2020 aarch64 aarch64 aarch64 GNU/Li…...
群控系统服务端开发模式-应用开发-操作记录功能开发
一、开放路由 在根目录下route文件夹下修改app.php文件,代码如下: // 操作日志Route::get(token/get_list,permission.Token/getList);// 获取操作日志列表Route::post(token/get_all,permission.Token/getAll);// 获取操作日志所有数据Route::post(toke…...
昇思25天学习打卡营第33天|共赴算力时代
文章目录 一、平台简介二、深度学习模型2.1 处理数据集2.2 模型训练2.3 加载模型 三、共赴算力时代 一、平台简介 昇思大模型平台,就像是AI学习者和开发者的超级基地,这里不仅提供丰富的项目、模型和大模型体验,还有一大堆经典数据集任你挑。…...
Vue 让视图区域滑到指定位置、回到顶部
滑倒指定位置:获取指定的dom,然后用scrollIntoView使dom出现在视图区域 回到顶部:操作父级dom的scrollTop 0,让该父级下的列表回到顶部 代码如下 <template><div class"testDemo"><div><el-bu…...
EasyGBS点对点穿透P2P远程访问技术在安防视频监控中的应用
随着信息技术的快速发展,安防视频监控系统在公共安全领域的应用变得越来越广泛。传统的视频监控系统多依赖于中心服务器进行视频流的集中处理和分发,这不仅增加了网络带宽的负担,还可能成为系统性能瓶颈。为了解决这些问题,P2P&am…...
Android 使用 Gson + OkHttp 实现 API 的常规使用(个人心得)
学习笔记 一、依赖和权限的添加 网络权限: 在 Android 中进行网络请求时,必须声明权限,确保应用具有访问互联网的能力。 <uses-permission android:name="android.permission.INTERNET"/> 依赖项: 确保在 build.gradle 中添加以下依赖: dependencies …...
WPF+MVVM案例实战与特效(三十九)- 深度剖析一个弧形进度条的实现
文章目录 1、使用 Path 结合 ArcSegment 绘制圆弧1、属性解读2、静态圆弧3、动态圆弧4、运行效果5、圆弧两端点的形状2、总结1、使用 Path 结合 ArcSegment 绘制圆弧 1、属性解读 Path 是 WPF 中的一个标记元素,用于绘制复杂的几何路径形状,而 ArcSegment 用于描述 Path 中…...
opencv——图片矫正
图像矫正 图像矫正的原理是透视变换,下面来介绍一下透视变换的概念。 听名字有点熟,我们在图像旋转里接触过仿射变换,知道仿射变换是把一个二维坐标系转换到另一个二维坐标系的过程,转换过程坐标点的相对位置和属性不发生变换&a…...
前端核心知识总结
前端架构知识总结主要包括以下几个方面: HTML:HTML是构建网页的基础,使用各种标签定义网页的结构,如<html>、<head>、<body>等。HTML5引入了新的语义化标签,如<article>、<section…...
【C语言】五子棋(c语言实现)
这里写目录标题 一、最终效果二、菜单打印函数三、棋盘的初始化和打印四、 人人对战4.1 落子判空函数4.2 悔棋函数4.3 判胜负函数4.4 人人对战 五、人机对战5.1 是将直接调用rand生成随机值,这就不可控5.2 是根据棋子赢面来判断哪里落子最好 六、如果选择退出程序直…...
【数据结构——查找】顺序查找(头歌实践教学平台习题)【合集】
目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现顺序查找的算法。 相关知识 为了完成本关任务,你需要掌握:1.根据输入数据建立顺序表,2.顺序表的输出,…...
Python的3D可视化库【vedo】2-1 (plotter模块) 绘制器的使用
文章目录 1 相关用语及其关系2 Plotter类的基本使用3 Plotter类具体的初始化设置3.1 全部初始化参数3.2 使用不同的axes vedo是Python实现的一个用于辅助科学研究的3D可视化库。 vedo的plotter模块封装了绘制器类Plotter。 Plotter实例可以用于显示3D图形对象、控制渲染器行为、…...
6.1 初探MapReduce
MapReduce是一种分布式计算框架,用于处理大规模数据集。其核心思想是“分而治之”,通过Map阶段将任务分解为多个简单任务并行处理,然后在Reduce阶段汇总结果。MapReduce编程模型包括Map和Reduce两个阶段,数据来源和结果存储通常在…...
【数模学习笔记】模糊综合评价
声明:以下笔记中的图片均来自“数学建模学习交流”清风老师的课程ppt,仅用作学习交流使用 模糊综合评价 文章目录 模糊综合评价模糊数学经典集合和模糊集合的基本概念经典集合和特征函数模糊集合和隶属函数模糊集合的分类 隶属函数的确定方法方法一 模糊…...
【C语言】库函数常见的陷阱与缺陷(四):内存内容操作函数[1]--memcmp
目录 一、功能与用法 1.1. 功能 1.2. 场景用法 二、陷阱与缺陷 2.1. 比较范围限制问题 2.2. 数据类型兼容性隐患 2.3. 其它 三、安全使用建议 四、代码示例 在 C 语言编程的世界里,内存内容操作函数宛如精密的工具,肩负着操控内存数据的重任。它们能灵活地复制、移动…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
