跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C Sharp While 循环
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= C# While循环 = '''While循环'''是C#中最基础的控制流结构之一,它允许代码在满足特定条件时重复执行一段语句。与for循环不同,while循环更适用于不确定循环次数的场景。 == 基本语法 == C#中的while循环语法如下: <syntaxhighlight lang="csharp"> while (condition) { // 循环体代码 } </syntaxhighlight> 其中: * '''condition'''是一个布尔表达式(返回true或false) * 循环会持续执行,直到condition变为false * 循环体可以是单条语句或代码块(用花括号包裹) == 工作原理 == <mermaid> flowchart TD A[开始] --> B{条件为真?} B -- 是 --> C[执行循环体] C --> B B -- 否 --> D[结束循环] </mermaid> 数学上可以表示为:当<math>P(n)</math>为真时,重复执行语句<math>S</math>: <math> \text{while } P(n) \text{ do } S </math> == 基础示例 == === 简单计数器 === <syntaxhighlight lang="csharp"> int count = 0; while (count < 5) { Console.WriteLine($"当前计数: {count}"); count++; } </syntaxhighlight> '''输出''': <pre> 当前计数: 0 当前计数: 1 当前计数: 2 当前计数: 3 当前计数: 4 </pre> === 用户输入验证 === <syntaxhighlight lang="csharp"> string userInput; while (true) { Console.Write("请输入'quit'退出: "); userInput = Console.ReadLine(); if (userInput == "quit") break; Console.WriteLine($"你输入了: {userInput}"); } </syntaxhighlight> '''输出'''(示例交互): <pre> 请输入'quit'退出: hello 你输入了: hello 请输入'quit'退出: test 你输入了: test 请输入'quit'退出: quit </pre> == 高级用法 == === 嵌套while循环 === <syntaxhighlight lang="csharp"> int i = 1; while (i <= 3) { int j = 1; while (j <= 3) { Console.WriteLine($"i={i}, j={j}"); j++; } i++; } </syntaxhighlight> '''输出''': <pre> i=1, j=1 i=1, j=2 i=1, j=3 i=2, j=1 i=2, j=2 i=2, j=3 i=3, j=1 i=3, j=2 i=3, j=3 </pre> === 复杂条件 === <syntaxhighlight lang="csharp"> Random random = new Random(); int target = random.Next(1, 101); int guess; int attempts = 0; Console.WriteLine("猜数字游戏(1-100)"); while ((guess = Convert.ToInt32(Console.ReadLine())) != target) { attempts++; Console.WriteLine(guess < target ? "太小了" : "太大了"); } Console.WriteLine($"恭喜!你用了{attempts}次猜中了数字{target}"); </syntaxhighlight> == 常见错误与陷阱 == 1. '''无限循环''':忘记更新循环变量 <syntaxhighlight lang="csharp"> // 错误示例 int x = 0; while (x < 10) { Console.WriteLine(x); // 缺少x++会导致无限循环 } </syntaxhighlight> 2. '''错误的条件表达式''':可能导致循环一次都不执行 <syntaxhighlight lang="csharp"> int y = 10; while (y < 5) // 条件初始就不成立 { Console.WriteLine(y); y++; } </syntaxhighlight> 3. '''使用浮点数作为循环条件''':由于浮点精度问题可能导致意外行为 <syntaxhighlight lang="csharp"> double d = 0.1; while (d != 1.0) // 不推荐这样比较浮点数 { d += 0.1; } </syntaxhighlight> == 实际应用案例 == === 文件读取 === <syntaxhighlight lang="csharp"> using System.IO; StreamReader file = new StreamReader("data.txt"); string line; while ((line = file.ReadLine()) != null) { Console.WriteLine(line); } file.Close(); </syntaxhighlight> === 游戏主循环 === <syntaxhighlight lang="csharp"> bool gameRunning = true; while (gameRunning) { ProcessInput(); UpdateGameState(); RenderGraphics(); gameRunning = !CheckExitCondition(); } </syntaxhighlight> == 性能考虑 == * while循环的性能与for循环相当 * 避免在循环条件中进行复杂计算: <syntaxhighlight lang="csharp"> // 不佳实践 while (ComplexCalculation() > threshold) { // ... } // 更好做法 double result = ComplexCalculation(); while (result > threshold) { // ... result = ComplexCalculation(); } </syntaxhighlight> == 与do-while的区别 == * while循环先检查条件后执行 * do-while循环至少执行一次,再检查条件 * 选择依据取决于是否需要至少执行一次循环体 == 最佳实践 == 1. 确保循环变量最终会使条件变为false 2. 复杂的条件可以考虑提取为方法或变量 3. 对于集合遍历,通常foreach更合适 4. 考虑使用break和continue语句控制流程 5. 保持循环体简洁,复杂逻辑提取为方法 == 练习建议 == 1. 实现一个倒计时程序 2. 编写程序计算数字的阶乘 3. 创建简单的菜单系统 4. 模拟银行账户的密码输入尝试限制 [[Category:编程语言]] [[Category:C Sharp]] [[Category:C Sharp 控制流]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)