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

C# 循环详解

C# 中的循环(Loop)用于重复执行一段代码,常见的循环有for、while、do...while、foreach四种。


1. for 循环

适用于已知循环次数的情况。

语法

for (初始化; 条件表达式; 迭代器) { // 循环体 }

示例

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

输出:

1 2 3 4 5

执行过程:

i=1 → 输出1 i=2 → 输出2 i=3 → 输出3 i=4 → 输出4 i=5 → 输出5 i=6 → 条件不成立,结束

for 倒序循环

for (int i = 10; i >= 1; i--) { Console.WriteLine(i); }

输出:

10 9 8 ... 1

for 多变量

for (int i = 0, j = 10; i < j; i++, j--) { Console.WriteLine($"i={i},j={j}"); }

2. while 循环

适用于不知道具体循环次数,只知道结束条件。

语法

while (条件) { // 循环体 }

示例

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

输出:

1 2 3 4 5

无限循环

while (true) { Console.WriteLine("运行中..."); }

通常配合 break:

while (true) { string input = Console.ReadLine(); if (input == "exit") { break; } Console.WriteLine(input); }

3. do...while 循环

特点:

至少执行一次。

语法

do { // 循环体 } while (条件);

示例

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

与 while 的区别

while

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

输出:

无输出

do...while

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

输出:

10

因为先执行后判断。


4. foreach 循环

专门用于遍历数组、集合。

遍历数组

string[] names = { "张三", "李四", "王五" }; foreach (string name in names) { Console.WriteLine(name); }

输出:

张三 李四 王五

遍历 List

List<int> nums = new List<int>() { 10,20,30,40 }; foreach (int num in nums) { Console.WriteLine(num); }

foreach 特点

优点:

  • 代码简洁
  • 不需要下标
  • 不容易越界

缺点:

  • 无法直接修改元素
  • 无法获得索引(需额外处理)

break 语句

用于立即结束循环。

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

输出:

1 2 3 4

continue 语句

跳过本次循环。

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

输出:

1 2 4 5

嵌套循环

循环中再套循环。

九九乘法表

for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { Console.Write($"{j}×{i}={i*j}\t"); } Console.WriteLine(); }

输出:

1×1=1 1×2=2 2×2=4 1×3=3 2×3=6 3×3=9 ...

实战案例

求1~100的和

int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } Console.WriteLine(sum);

结果:

5050

求偶数和

int sum = 0; for (int i = 2; i <= 100; i += 2) { sum += i; } Console.WriteLine(sum);

猜数字游戏

Random random = new Random(); int target = random.Next(1, 101); while (true) { Console.Write("请输入数字:"); int num = Convert.ToInt32(Console.ReadLine()); if (num > target) { Console.WriteLine("大了"); } else if (num < target) { Console.WriteLine("小了"); } else { Console.WriteLine("猜对了"); break; } }

四种循环对比

循环使用场景是否先判断
for已知次数
while未知次数
do...while至少执行一次
foreach遍历集合

选择建议

已知循环次数 → for 未知循环次数 → while 至少执行一次 → do...while 遍历数组/集合 → foreach

在实际开发中,使用频率通常是:

for > foreach > while > do...while

其中foreach在遍历数组、List<T>、字典等集合时最常用,而for在需要索引操作或修改元素时更合适。

http://www.jsqmd.com/news/1084213/

相关文章:

  • Beyond Compare 5 密钥生成工具完整指南:5步快速获取专业版授权
  • Epilogue预热64 Operator:今年将让你在电脑及手持设备玩N64卡带游戏
  • 硬核剖析 MySQL 索引:从 B+Tree 底层到七大失效场景,一文彻底吃透
  • 伪静态注入与空格绕过:Web安全攻防中的SQL注入高级技巧
  • IPXWrapper终极指南:让经典游戏在Windows 10/11重获联机生命
  • 海盐勾兑和天然海水差在哪?械字号鼻腔喷雾的硬核品质分界线
  • 业余操作系统 Astral 移植 Wine:多款游戏运行测试,Steam 成下一步目标!
  • 能力的真伪之辨——从“做到极致”到“只会吟诗”
  • SSRF漏洞深度解析:从攻击原理到多层次防御实战
  • 建材行业数据驱动的全铝门工艺体系优化与风险规避分析
  • 杰理之超距不回连问题【篇】
  • 晶振故障分析与索斯特三防解决方案详解
  • 2026最新各类命理软件观察:命理排盘软件怎么判断是否适合新手?
  • 产线仿真一定要写代码吗?分享一个不用编程的实操方法
  • AI驱动SQL注入自动化修复:从原理到Java工程实践
  • Easysearch 布尔查询优化(上)|写法不影响顺序,结构才影响性能
  • CVE漏洞实战:从复现到修复的完整生命周期剖析
  • Google Wallet 新增护照创建身份通行证功能,机场安检免出示身份证件!
  • 昭通黄金白银回收铂金旧金回收无套路门店 TOP 榜单 实地测评资料整理
  • Easysearch 布尔查询优化(下)|找 Top-K 时,如何跳过注定落选的文档
  • 机器人学习数据层成本高?各环节问题大揭秘!
  • 本地模型也能懂逻辑,Ryzen AI 数学推理能力测试
  • 同样是铝合金液冷板,为什么3003和6061的焊接难度差了3倍?
  • 华为eNSP企业园区网综合实验笔记
  • 文档下载困境:30+平台内容如何高效获取?
  • q-Stancu算子:基于q-Pochhammer符号的量子逼近与经典极限分析
  • Flutter:一款免费开源的 SDK,助力开发者打造多平台高效应用!
  • 鸿蒙窗口管理在 Flutter 项目里的落地:沉浸式、系统栏、返回键拦截的协同
  • 谷歌调整开发者计费方式:30%统一费率变“更低、解耦费率”,多举措降低分成比例
  • Kali Linux WiFi渗透测试实战:从环境搭建到WPA2密码破解全流程