我一直在寻找通过为我使用的应用程序的一些示例源代码,我碰到这条线进来:在C#应用程序中使用“for(;;)”?
for (;;)
{
// The rest of the application's code
}
看起来是创建一个无限循环,但我不熟悉“ ;;”不幸的是,Google很难。
我一直在寻找通过为我使用的应用程序的一些示例源代码,我碰到这条线进来:在C#应用程序中使用“for(;;)”?
for (;;)
{
// The rest of the application's code
}
看起来是创建一个无限循环,但我不熟悉“ ;;”不幸的是,Google很难。
是的,这是一个无限循环。这是一个普通的循环,没有条件表达式。
所有的for语句的表达都是可选的;例如,下面的语句是用来写一个无限循环:
for (; ;) { // ... }
谢谢,这是常见的做法(IE:不是黑客攻击) – JuniorDeveloper1208 2011-01-05 13:27:51
有一点要注意的是,你应该有上从打破它,有一个非循环结束的条件通常是坏... @toleero ,这是一个风格问题。我喜欢使用'while(true){}'循环,它更直接点IMO,但任何一个都是标准惯例。 – 2011-01-05 13:28:25
@ T84 - 一种常见,但许多使用'而(真){}'的可读性。 – Oded 2011-01-05 13:29:12
它是无限循环。
等于
while (true) {
}
有趣的阅读这篇文章:
http://csharpdevelop.blogspot.com/2004/05/writing-infinite-loop.html
这种代码中出现了不少 在工作线程等待一些 工作要做。这是一种常见的代码 模式。循环 语句正文中的所有代码都至关重要。必须经常检查“退出 条件”。 这意味着要做的工作必须是 。通常这是一个较小的 工作夹头工作的 更大的工作,它被赋予完成。
这与for (<initial>; <condition>; <increment>)
一样,你只是省略了初始条件和增量。在这种情况下,条件将始终被视为真实。
其在谷歌中的第一项,如果你有兴趣我GOOGLE C#为;; 并得到该链接http://msdn.microsoft.com/en-us/library/ch45axte.aspx 单击C#和MSDN指出:
所有的for语句是可选的表达式;例如,下面的语句是用来写一个无限循环:
为(;) { // ... }
是的,它是一个无限循环。
在for
语句中的所有参数都是可选的,条件默认为true
,所以它的一样:
for (;true;)
或:
while (true)
一个正常的循环有这些元素
for (for-initializer ; for-condition ; for-iterator) embedded-statement
例如
for(int i = 0 ; i < 10 ; i++) {
foo();
}
所有这些元素都可以省略,你留下了for(;;)
,这是一个无限循环。
C#语言specification特别指出
如果换条件从 for语句省略,那么 明确赋值进行评价,如同 for条件均与上述真 取代扩张。
所以,for(;;)
相同for(;true;)
我只想澄清:
;;
是不是一个特殊的运算符或东西 - 它是一个普通的for循环。
定期for循环看起来像这样:
for (do_before_loop**;** finish_loop_when_this_condition_is_false**;** do_after_each_iteration);
,如果你把所有3个部分清空你;;
- 因为你不具备退出条件 - 这是一个无限循环。
通常你写你的循环是这样的:
for (int i = 0; i < 10; i++)
{
// The rest of the application's code
}
现在,当你希望你的循环是无限的,你只需要删除“INT I = 0”,条件“我< 10” ,并增加“i ++”。如果你这样做,那么在一个for语句中你只会看到“;;”
for (;;)
{
// The rest of the application's code
}
技术上,用于循环至是无限的,所有必须删除是条件(i <10)。 – 2016-12-03 13:30:34
这是一个普通的使用无限循环的。 我们使用这个循环的情况下,我们不知道我们需要多少次执行循环内的代码。因此我们需要定义一个条件来摆脱这个循环。 这里是从服务器接收长消息的一个例子:
for (;;)
{
//Receive the maximum allowed size of the message
//Save(Concatenate) the received data in a variable (TotalReceivedData)
// If the length of the received part of the message is equal to zero , break the operation
//<Break the loop>if(message.length == 0){break;}</Break the loop>
}
在这里你可以使用存储在变量TotalReceivedData完整接收到的消息。
我添加了这个例子,因为我刚刚遇到过这样的情况。
[C#for循环在缺少所有表达式时做了什么?例如,用于(;;){}](http://stackoverflow.com/questions/697307/what-does-ac-for-loop-do-when-all-the-expressions-are-missing-eg-for) – paxdiablo 2011-01-05 13:43:09