C#常用的循环语句

server/2025/3/12 1:05:49/

在C#中,循环是一种控制结构,用于重复执行一组语句直到满足特定条件。C#提供了几种循环结构,包括for循环、while循环、do-while循环和foreach循环。每种循环都有其特定的用途和场景。下面我将逐一介绍这些循环的用法。

一、C#循环类型

1. for 循环

for循环是最常用的循环之一,它由初始化部分、条件表达式和迭代部分组成。

for (int i = 0; i < 10; i++)
{Console.WriteLine(i);
}

2. while 循环
while循环在给定条件为真时重复执行代码块。

int i = 0;
while (i < 10)
{Console.WriteLine(i);i++;
}

3. do-while 循环
do-while循环至少执行一次代码块,然后在每次迭代后检查条件。

int i = 0;
do
{Console.WriteLine(i);i++;
} while (i < 10);

4. foreach 循环
foreach循环用于遍历数组或集合中的每个元素。它通常用于读取集合中的元素,而不是修改它们。

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

示例:使用循环打印1到10的数字

// 使用for循环

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

// 使用while循环

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

// 使用do-while循环

int j = 1;
do
{Console.WriteLine(j);j++;
} while (j <= 10);

注意事项:

  • 在使用for和while循环时,确保更新循环变量以避免无限循环。

  • 在使用foreach循环时,通常不修改集合中的元素,因为这将违反集合的预期用途并可能导致运行时错误。如果需要修改元素,请使用索引器或使用其他类型的循环(例如for)。

  • 选择合适的循环类型可以提高代码的可读性和效率。例如,当你需要遍历数组或集合的所有元素时,使用foreach;当你需要重复执行直到满足某个条件时,使用while或do-while;当你需要精确控制迭代次数时,使用for循环

二、循环终止方式

1‌.自然终止‌

  • 当循环条件变为false时自动退出(如for循环的计数器超出范围或while循环的条件不再满足)‌。

2‌.break语句‌

  • 作用‌:立即终止当前所在循环,跳出循环体‌。
  • 示例‌:
for (int i = 0; i < 10; i++) 
{if (i == 5) break;  // 当i=5时终止循环
}

3‌.continue语句‌

  • 作用‌:跳过当前迭代,进入下一次循环‌45。
  • 示例‌:
for (int i = 0; i < 5; i++) 
{if (i % 2 == 0) continue;  // 跳过偶数Console.WriteLine(i);      // 输出1,3
}

4‌.goto语句‌

  • 作用‌:跳转到指定标签位置,可退出多层嵌套循环‌56。
  • 示例‌:
for (int i = 0; i < 3; i++) 
{for (int j = 0; j < 3; j++) {if (j == 1) goto Exit;  // 跳转到Exit标签}
}
Exit: Console.WriteLine("已跳出循环");

‌注意‌:过度使用会降低代码可读性‌。

三、选择终止方式的建议‌

终止方式适用场景注意事项
‌自然终止‌条件明确且可预测的循环确保循环条件最终变为false
‌break‌需提前终止循环(如错误检测)仅终止当前循环层
‌continue‌跳过特定迭代(如过滤数据)避免跳过必要的循环终止条件
‌goto‌多层嵌套循环需快速退出谨慎使用,优先替代方案

通过合理选择循环类型和终止方式,可显著提升代码效率和可维护性。建议优先使用break和continue,仅在必要时使用goto‌


http://www.ppmy.cn/server/174306.html

相关文章

使用PySpark进行大数据处理与机器学习实战指南

1. 技术介绍 1.1 PySpark概述 PySpark是Apache Spark的Python API&#xff0c;它结合了Python的易用性和Spark的分布式计算能力&#xff0c;能够高效处理PB级数据集。Spark基于内存计算的特性使其比传统Hadoop MapReduce快10-100倍&#xff0c;支持流处理、SQL查询、机器学习…

《基于WebGPU的下一代科学可视化——告别WebGL性能桎梏》

引言&#xff1a;科学可视化的算力革命 当WebGL在2011年首次亮相时&#xff0c;它开启了浏览器端3D渲染的新纪元。然而面对当今十亿级粒子模拟、实时物理仿真和深度学习可视化需求&#xff0c;WebGL的架构瓶颈日益凸显。WebGPU作为下一代Web图形标准&#xff0c;通过显存直存、…

从多智能体变成一个具有通过场景生成多个决策路径 并在实施的过程中优化决策路径 openmanus 致敬开源精神中的每一个孤勇者

大家做智能体应该很久了 我们发现人类预制的规则总会因为稀疏区域导致失效 所以大家展开了思考 一个智能体可以根据场景描述自动规划路径 一个智能体可以根据场景描述自动规划路径&#xff0c;其核心流程大致如下&#xff1a; 场景解析与约束提取 利用自然语言处理&#xff08;…

Pytorch 转向TFConv过程中的卷积转换

转换知识基础 图像中使用的卷积一般为&#xff0c;正方形卷积核针对一个同等面积邻域的&#xff0c;进行相乘后邻域叠加到中心&#xff0c;相当于考虑中心像素的周围信息&#xff0c;做了一定的信息融合。 卷积相关参数 卷积前: input c1 卷积中: kernel 卷积核 stride 步…

揭开AI-OPS 的神秘面纱 第五讲 AI 模型服务层(开源方向)

之前的分析确实侧重于通用的模型服务框架和平台,而忽略了对开源模型本身的讨论,以及模型加速和基于开源模型的微调与部署等关键问题。 下面将针对 – 对 AI 模型服务层的分析 开源模型方向 进行讨论。 其实 在AI - OPS 中 模型不是都以最终自己的数据训练成垂直领域的模型为…

【Ubuntu系统设置固定内网ip,且不影响访问外网 】

Ubuntu系统安装后&#xff0c;由于每次重新开机会被重新分配内网ip&#xff0c;所以我们可以设置固定内网ip&#xff0c;且不影响访问外网&#xff0c;亲测有效 打开【终端】&#xff0c;查看当前内网ip&#xff08;inet&#xff09;&#xff0c;子网掩码&#xff08;netmask&a…

Java/Kotlin逆向基础与Smali语法精解

1. 法律警示与道德边界 1.1 司法判例深度剖析 案例一&#xff1a;2021年某游戏外挂团伙刑事案 犯罪手法&#xff1a;逆向《王者荣耀》通信协议&#xff0c;修改战斗数据包 技术细节&#xff1a;Hook libil2cpp.so的SendPacket函数 量刑依据&#xff1a;非法经营罪&#xff…

服务器磁盘占用率过高解决方案

问题描述 收到阿里云的短信提示磁盘占用过高提示 【阿里云】尊敬的xxxxxx99xxxx - 1608479907179704 , 华东1(杭州)的云服务器ECS 发生告警 &#xff0c; 实例&#xff1a;ap-pinggu-server-pro-01/xxx.xx.xxx.xxx[{instanceIdi-bp17xxxxxxxxxxxxxx, userId160847990xxxxxxxx, …