首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >for (;;)和while (true)哪个是正确的C#无限循环?

for (;;)和while (true)哪个是正确的C#无限循环?
EN

Stack Overflow用户
提问于 2009-09-09 18:06:37
回答 15查看 159K关注 0票数 108

回到我的C/C++时代,将“无限循环”编码为

代码语言:javascript
复制
while (true)

感觉更自然,对我来说似乎更明显,而不是

代码语言:javascript
复制
for (;;)

20世纪80年代末与PC-lint的一次接触以及随后的最佳实践讨论打破了我的这个习惯。此后,我使用for控制语句对循环进行了编码。今天,很长一段时间以来的第一次,也许是我作为一名C#开发人员第一次需要无限循环,我面临着同样的情况。其中一个是正确的,另一个是错误的?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2009-09-09 18:08:15

代码语言:javascript
复制
while(true)
{

}

是我一直使用的,也是我见过其他人用于必须手动中断的循环的。

票数 131
EN

Stack Overflow用户

发布于 2009-09-09 18:14:02

C#编译器将把这两个

代码语言:javascript
复制
for(;;)
{
    // ...
}

代码语言:javascript
复制
while (true)
{
    // ...
}

转到

代码语言:javascript
复制
{
    :label
    // ...
    goto label;
}

两者的CIL是相同的。大多数人发现while(true)更容易阅读和理解。for(;;)是相当神秘的。

来源:

我对.NET Reflector做了更多的修改,并且在Visual Studio中使用了“优化代码”来编译这两个循环。

两个循环都编译为(使用.NET反射器):

代码语言:javascript
复制
Label_0000:
    goto Label_0000;

Raptors should attack soon.

票数 337
EN

Stack Overflow用户

发布于 2009-09-09 18:07:51

我认为这可能更容易阅读,并且绝对是在C#中使用的标准:

代码语言:javascript
复制
while(true)
{
   //Do My Loop Stuff
}
票数 61
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1401159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档