You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

初学者问题:C#简单密码程序的While循环出现无限重复提问故障

问题原因
  • C#语法规定,while、if等流程控制语句后未紧跟花括号{}时,仅会将紧随的第一行代码作为其执行体。错误代码中while (password != "secret")未加花括号,只有Console.WriteLine("Please Input Your Password:");这一行被纳入循环体。
  • 初始化时password被赋值为空字符串,永久满足password != "secret"的循环条件,程序会一直执行循环内的输出语句,永远不会走到后续读取输入、密码校验的逻辑,最终形成死循环。
修复方案

把需要循环执行的逻辑全部用花括号包裹进while循环体即可,修正后的参考代码如下:

var password = "";
while (password != "secret")
{
    Console.WriteLine("Please Input Your Password:");
    password = Console.ReadLine() ?? ""; // 加?? ""处理ReadLine返回null的边界情况,避免空引用警告
    if (password == "secret")
    {
        Console.WriteLine("You have been authenticated");
    }
    else
    {
        Console.WriteLine("You have not been authenticated");
    }
}
优化建议
  • 原代码中else if (password != "secret")属于冗余判断,前面已经校验了密码等于secret的场景,直接替换为else即可。
  • 日常编码建议给所有流程控制语句都添加花括号,哪怕执行体只有一行代码,能避免后续新增逻辑时出现同类语法错误。

内容的提问来源于stack exchange,提问作者m4tthewh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:15:05