在C#中是(;;)安全的,它真正做了什么?

Bet*_*zel 12 .net c# for-loop

我在现有的代码中发现了一个空的for语句,我想知道它的作用是什么,它是否"安全".这只是感觉不对.

for(;;)
{
   //some if statements and a case statement
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Set*_*eth 17

这是创建无限循环的一种方法.它是一个常规for循环,但具有空的初始化,条件和增量表达式.因为条件表达式是无操作,所以循环永远不会退出.它是完全"安全的",假设它有一个终止条件(一个breakreturn声明[甚至是一个goto,我猜])某处.

就个人而言,我更喜欢用whiles 写无限循环:

while (true) 
{  
    //some statements and a case statement
}
Run Code Online (Sandbox Code Playgroud)

(因为for迭代而且while重复).

但是,在阅读了这个问题后(由@jailf链接),我现在更喜欢while (42) { ... }.

  • 我认为`for(;;)`更具可读性.:)如果我的循环没有条件,我为什么要写一个(比如`true`)?(`for(;;)`明确地告诉读者"这个循环没有终止条件",我认为它是可读的. (6认同)
  • 我会使用while只是为了增强代码的可读性 (5认同)
  • 如果一个完全空的布尔表达式为true或false,那么向学生和新手询问这是一个有趣的琐事.我们大多数人会认为"空"与0 /假最相似.但是C认为空是真的,如这个表达式所示. (5认同)

Pab*_*ruz 5

它等同于具有无限循环:

while (true) {

}
Run Code Online (Sandbox Code Playgroud)

它是安全的.您需要提供外部退出机制.IE,在for循环内中断.