来源:互联网 更新时间:2026-07-28 09:52
在Visual Studio里写C#代码时,for循环可以说是最常用的结构之一,用来重复执行某段代码,省心又高效。它的标准写法大家都很熟悉:
for (初始化表达式; 条件表达式; 迭代表达式)
{
// 循环体
}
不过,这里有个小陷阱——如果在for循环的括号后面不小心多写了一个分号,结果可就完全不一样了。这个看似不起眼的分号,往往会让代码跑出你完全意想不到的结果。
先看一个最常见的场景:在for循环的括号后直接加分号,循环体直接变“空气”。比如:
for (int i = 0; i < 5; i++);
{
Console.WriteLine("这是循环体内容");
}
这段代码执行后,控制台不会输出任何东西。因为分号让for循环的定义提前结束了,后面大括号里的代码根本不属于循环体,它只是跟在循环后面的一个独立语句块。简单说,循环体被“空转”了,里面的内容从未被执行过。
更隐蔽的是逻辑错误。比如想计算0到9的总和:
int sum = 0;
for (int i = 0; i < 10; i++);
{
sum += i;
}
Console.WriteLine(sum);
本意是每次循环把i累加到sum上,但结果输出却是0。原因还是那个分号——循环体为空,i自增了10次,但累加操作一次都没执行。更糟糕的是,循环结束后i已经变成10,但大括号里的sum += i只执行了一次,加的是循环结束后的i值(10),但这里因为变量作用域问题,更可能编译报错。不过原文的例子中,这种写法在C#里其实会导致编译错误(i的作用域问题),但无论如何,逻辑完全偏离了预期。
有些情况下,分号甚至会直接引发编译错误:
for (int i = 0; i < 3; i++);
int j = 5;
在C#中,这种写法会报错,因为一个空的for循环后面紧跟着一个变量声明,语法上不允许。编译器会提示“只有赋值、调用、递增、递减和new对象表达式可用作语句”,意思是你不能把一个空循环当作一条完整的语句,然后紧接着再声明变量。类似的坑在代码审查中经常能碰到。
总的来说,for循环加分号这个“手误”可大可小——轻则循环体空转,重则逻辑全错,甚至直接编译失败。写代码的时候,多留个心眼,检查一下括号后有没有不小心多出来的分号,能省下不少调试的时间。毕竟,这类问题往往是最难找的,因为肉眼很难一眼看出来。
新浪机器学习热点小时报丨2026年07月25日18时_今日实时机器学习热点速递
黄金价格不断创新高!黄金稳定币XAU、PAXG市值达11亿美元
CC币价格预测(2026-2035):Canton币今日价格走势+长期价格预测
晶核艾尔莎角色盘点 晶核艾尔莎强度分析与实战表现
蚂蚁庄园今日答案7月21日(今日已更新) 蚂蚁庄园今天正确答案是什么呢
区块链OTC交易所有哪几家比较正规?
新浪互联网热点小时报丨2026年07月26日16时_今日实时互联网热点速递
Intel喜讯连连:18A工艺良率提升到85%、CPU将涨价15%
今日比特币暴涨分析:Metaplanet的比特币BTC投资推动股价上涨17%
腾讯ima怎么创建共享知识库?
AMD英特尔集体失眠!英伟达Rosa CPU搭载Rigel核:单核性能碾压x86
潜水员戴夫丛林DLC接吻的鱼任务攻略
原神霜月三处月灵龛具体位置汇总
合集38个项目筹集5.406亿美元 Figure融资2亿
快手手机版设置关闭展示亲密朋友的方法
2026热门直线加速赛车手游推荐:高人气、爽快加速体验的精品榜单
遗忘之海密室通关教程 遗忘之海密室全关卡解谜思路与难点解析
五菱星光L六座新能源SUV上市:三版可选,中配12.28
抖音怎么取消申请退货退款?抖音上取消退货怎么操作
华为Mate 70系列首发的红枫镜头下放至千元档:全员普及原色影像
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc