我一直在尋找通過爲我使用的應用程序的一些示例源代碼,我碰到這條線進來:在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