当前位置: 首页 > news >正文

【从零开始入门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

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

相关文章:

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

文章目录 一、while 循环1、语法&#xff1a;2、示例&#xff1a; 二、 do-while 循环1、语法&#xff1a;2、示例&#xff1a; 三、for 循环1、语法&#xff1a;2、示例&#xff1a; 四、foreach 循环1、语法&#xff1a;2、示例&#xff1a; 五、总结对比六、注意事项七、使用…...

Spring Boot项目使用虚拟线程

Spring Boot项目启用虚拟线程 开始基本使用先写一个测试方法通过springboot配置项开启虚拟线程 目前存在的问题 开始 虚拟线程正式发布是在JDK21&#xff0c;对于Spring Boot版本选择3以上。 基本使用 关于虚拟线程本身的使用&#xff0c;之前已经介绍过。这里要说的是直接将…...

实现SpringBoot项目嵌入其他项目

很多时候我们需要在项目里面嵌入其他项目或者被其他项目嵌入&#xff0c;如我们开发一个开源项目b&#xff0c;用户需要在自己的项目a嵌入b项目&#xff0c;使用b项目的功能&#xff0c;而且要实现a项目工作最小化&#xff0c;最好实现引入即用。 1.定义b项目的自定义配置 …...

朗致面试---IOS/安卓/Java/架构师

朗致面试---IOS/安卓/Java/架构师 一、面试概况二、总结三、算法题目参考答案 一、面试概况 一共三轮面试&#xff1a; 第一轮是逻辑行测&#xff0c;25道题目&#xff0c;类似于公务员考试题目&#xff0c;要求90分钟内完成。第二轮是技术面试&#xff0c;主要是做一些数据结…...

数字信号处理:FIR滤波器

FIR&#xff08;Finite Impulse Response&#xff0c;有限脉冲响应&#xff09;滤波器是一种数字滤波器&#xff0c;其输出信号是输入信号的加权线性组合。FIR滤波器以其线性相位特性和易于设计的优势&#xff0c;广泛应用于信号处理、通信、音频处理等领域。 FIR滤波器的特点…...

鲲鹏麒麟安装Kafka-v1.1.1

因项目需要在鲲鹏麒麟服务器上安装Kafka v1.1.1&#xff0c;因此这里将安装配置过程记录下来。 环境说明 # 查看系统相关详细信息 [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文件&#xff0c;代码如下&#xff1a; // 操作日志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 加载模型 三、共赴算力时代 一、平台简介 昇思大模型平台&#xff0c;就像是AI学习者和开发者的超级基地&#xff0c;这里不仅提供丰富的项目、模型和大模型体验&#xff0c;还有一大堆经典数据集任你挑。…...

Vue 让视图区域滑到指定位置、回到顶部

滑倒指定位置&#xff1a;获取指定的dom&#xff0c;然后用scrollIntoView使dom出现在视图区域 回到顶部&#xff1a;操作父级dom的scrollTop 0&#xff0c;让该父级下的列表回到顶部 代码如下 <template><div class"testDemo"><div><el-bu…...

EasyGBS点对点穿透P2P远程访问技术在安防视频监控中的应用

随着信息技术的快速发展&#xff0c;安防视频监控系统在公共安全领域的应用变得越来越广泛。传统的视频监控系统多依赖于中心服务器进行视频流的集中处理和分发&#xff0c;这不仅增加了网络带宽的负担&#xff0c;还可能成为系统性能瓶颈。为了解决这些问题&#xff0c;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——图片矫正

图像矫正 图像矫正的原理是透视变换&#xff0c;下面来介绍一下透视变换的概念。 听名字有点熟&#xff0c;我们在图像旋转里接触过仿射变换&#xff0c;知道仿射变换是把一个二维坐标系转换到另一个二维坐标系的过程&#xff0c;转换过程坐标点的相对位置和属性不发生变换&a…...

前端核心知识总结

‌前端架构知识总结‌主要包括以下几个方面&#xff1a; ‌HTML‌&#xff1a;HTML是构建网页的基础&#xff0c;使用各种标签定义网页的结构&#xff0c;如<html>、<head>、<body>等。HTML5引入了新的语义化标签&#xff0c;如<article>、<section…...

【C语言】五子棋(c语言实现)

这里写目录标题 一、最终效果二、菜单打印函数三、棋盘的初始化和打印四、 人人对战4.1 落子判空函数4.2 悔棋函数4.3 判胜负函数4.4 人人对战 五、人机对战5.1 是将直接调用rand生成随机值&#xff0c;这就不可控5.2 是根据棋子赢面来判断哪里落子最好 六、如果选择退出程序直…...

【数据结构——查找】顺序查找(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 测试说明 我的通关代码: 测试结果&#xff1a; 任务描述 本关任务&#xff1a;实现顺序查找的算法。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.根据输入数据建立顺序表&#xff0c;2.顺序表的输出&#xff0c;…...

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是一种分布式计算框架&#xff0c;用于处理大规模数据集。其核心思想是“分而治之”&#xff0c;通过Map阶段将任务分解为多个简单任务并行处理&#xff0c;然后在Reduce阶段汇总结果。MapReduce编程模型包括Map和Reduce两个阶段&#xff0c;数据来源和结果存储通常在…...

【数模学习笔记】模糊综合评价

声明&#xff1a;以下笔记中的图片均来自“数学建模学习交流”清风老师的课程ppt&#xff0c;仅用作学习交流使用 模糊综合评价 文章目录 模糊综合评价模糊数学经典集合和模糊集合的基本概念经典集合和特征函数模糊集合和隶属函数模糊集合的分类 隶属函数的确定方法方法一 模糊…...

【C语言】库函数常见的陷阱与缺陷(四):内存内容操作函数[1]--memcmp

目录 一、功能与用法 1.1. 功能 1.2. 场景用法 二、陷阱与缺陷 2.1. 比较范围限制问题 2.2. 数据类型兼容性隐患 2.3. 其它 三、安全使用建议 四、代码示例 在 C 语言编程的世界里,内存内容操作函数宛如精密的工具,肩负着操控内存数据的重任。它们能灵活地复制、移动…...

2026年降AI技术进化深度解读:从换词替句到语义重构各代技术效果完整对比

2026年降AI技术进化深度解读&#xff1a;从换词替句到语义重构各代技术效果完整对比 跟同学聊起降AI技术进化解读&#xff0c;发现大家理解差距很大。理解浅的踩很多坑&#xff0c;理解深的很快解决了。 这篇文章把原理和实战方法都讲清楚。 理解降AI技术进化解读的核心逻辑 …...

2026年第二次答辩前论文降AI攻略:二次答辩AIGC超标4.8元彻底解决完整处理方案

2026年第二次答辩前论文降AI攻略&#xff1a;二次答辩AIGC超标4.8元彻底解决完整处理方案 关于第二次答辩论文降AI&#xff0c;我总结了一个最重要的教训&#xff1a;别只降标红段落&#xff0c;要全文处理。 之前逐段降&#xff0c;整体检测还是超标。换成全文上传&#xff…...

如何3步搭建你的私人游戏云:Sunshine游戏串流服务器终极指南

如何3步搭建你的私人游戏云&#xff1a;Sunshine游戏串流服务器终极指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器&#xff0c;专…...

02. 基本类型

02. 基本类型 1. 概述 TypeScript 的核心特性是静态类型系统。基本类型是 TypeScript 类型系统的基础&#xff0c;包括 JavaScript 原有的原始类型和 TypeScript 新增的特殊类型。 // TypeScript 类型系统概览 ┌──────────────────────────────…...

大模型 API 中转站工程选型:token5u 接入与压测清单

工程项目里选 API 中转站&#xff0c;不能只看“能不能调通”。能调通只是第一步&#xff0c;后面还有协议兼容、模型路由、超时重试、流式输出、账单归因、Key 管理、企业结算和故障切换。本文按工程视角拆&#xff1a;行业风险、选型指标、推荐顺序、接入示例和上线前压测清单…...

别再新建空文件了!手把手教你用CodeBlocks创建可调试的C/C++工程(避坑中文路径)

别再新建空文件了&#xff01;手把手教你用CodeBlocks创建可调试的C/C工程&#xff08;避坑中文路径&#xff09; 刚接触编程的新手常常会遇到这样的困惑&#xff1a;明明按照教程写好了代码&#xff0c;设置了断点&#xff0c;按下F7却毫无反应。这种挫败感往往源于一个被多数…...

多组学数据如何高效上传GSA?这份流程指南请收好

GSA&#xff08;Genome Sequence Archive&#xff0c;基因组序列存档&#xff09;由中科院基因组所主办,是国内权威的组学数据存储与共享平台&#xff0c;为全球科研人员提供基因组、转录组等高通量测序数据的提交、存储与开放获取服务&#xff0c;支撑生命科学研究与数据共享。…...

如何快速找回被遗忘的压缩包密码?ArchivePasswordTestTool终极指南

如何快速找回被遗忘的压缩包密码&#xff1f;ArchivePasswordTestTool终极指南 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经面…...

突破禾本科转化壁垒:农杆菌介导谷子基因编辑的关键参数解析 伯远生物

摘要&#xff1a;谷子&#xff08;Setaria italica&#xff09;作为C4禾谷类模式作物&#xff0c;其CRISPR基因编辑效率高度依赖稳定的遗传转化体系。针对谷子基因型依赖性强、愈伤再生困难等痛点&#xff0c;本文系统梳理了以胚性愈伤组织为核心的农杆菌转化流程&#xff0c;详…...

终极Windows与Office智能激活解决方案:KMS_VL_ALL_AIO全面解析与实战指南

终极Windows与Office智能激活解决方案&#xff1a;KMS_VL_ALL_AIO全面解析与实战指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO是一款功能强大的Windows与Office智能激活脚…...