2011-01-05 4 views
9

C#アプリケーションで "for(;;)"を使用していますか?私が使用するアプリケーションのためのいくつかのサンプルソースコードを探していたと私は、このラインに出くわした

for (;;) 
{ 
// The rest of the application's code 
} 

これは無限ループを作成することであるように見えますが、私は "に慣れていませんよ;; "残念ながらGoogleにとって非常に難しいです。

+1

[すべての式が見つからない場合のC#forループの機能例えばfor(;;){}](http://stackoverflow.com/questions/697307/what-does-ac-for-loop-do-when-all-the-expressions-are-missing-eg-for) – paxdiablo

答えて

12

はい、無限ループです。条件式のない普通のforループです。

documentation for for

for文の表現は、すべてオプションです。たとえば、次の文は、無限ループを記述するために使用されます。

for (; ;) 
{ 
    // ... 
} 
+0

ありがとう、それは一般的な練習ですか?(IE:ハックではありません) – JuniorDeveloper1208

+2

注意すべき点の1つは、終了しないループが通常悪い状態になるためには、それを中断する条件があることです。 @toleeroそれはスタイルの問題です。代わりに 'while(true){}'ループを使うのが好きですが、それはIMOの方が直感的ですが、いずれかが標準的な方法です。 –

+1

@ t84 - かなり一般的ですが、多くの人が可読性のために 'while(true){}'を使います。 – Oded

7

それは無限ループです。

この記事で興味深い読書
0

while (true) { 
} 
に等しい

:この種のコードを行うには、いくつかの 仕事を待っているワーカースレッドでかなり を発生

http://csharpdevelop.blogspot.com/2004/05/writing-infinite-loop.html

。一般的なコード パターンです。ループの ステートメント本文のすべてのコードは重要です。 「終了 条件」は頻繁にチェックする必要があります。 これは、行う作業が短くなければならないことを意味します。 通常、これは達成するために与えられた 作業のより大きなセットのうち、より小さな1つの小さなチャックです。

1

これはfor (<initial>; <condition>; <increment>)と同じです。これは、単に初期値、条件、増分を除外しているだけです。この場合、条件は常に真とみなされます。

0

そのグーグルの最初のエントリあなたが興味を持っている場合、私はのために のC#をググ;; このリンクを取得しましたhttp://msdn.microsoft.com/en-us/library/ch45axte.aspx C#とmsdnの状態をクリックします。

forステートメントのすべての式はオプションです。 (;) {// ...}

1

はい、それは無限ループだため

:例えば、次のステートメントは、無限ループを記述するために使用されます。

for (;true;) 

か:for文の

すべてのパラメータは、それは同じですので、trueへの条件のデフォルトオプションであり、そして

while (true) 
0

ループあり、これらの要素のための通常の

for (for-initializer ; for-condition ; for-iterator) embedded-statement 

たとえば

for(int i = 0 ; i < 10 ; i++) { 
    foo(); 
} 

これらの要素のどれを省略することができ、あなたは無限ループである、for(;;)が残っています。以下のための条件文の から省略されている場合

C#言語specificationが、具体的

を述べ、 明確な割り当てが進むの、評価のための条件上記で真 に置き換えた かのように拡張。

だから、for(;;)は、私はちょうど明確にしたいfor(;true;)

2

と同じです:

;;は特別な作業か何かではない - それはループの正規のです。

ループの通常はそのようになっています。あなたはすべての3つの部分を残す場合

for (do_before_loop**;** finish_loop_when_this_condition_is_false**;** do_after_each_iteration);

あなたが;;を取得する空 - あなたは終了条件を持っていないので、 - これは無限ループです。

3

通常、あなたがこのようにあなたのループを書く:あなたはあなたのループは無限の1になりたい場合は、あなただけの「I = 0をint型」、状態「I < 10」を削除する必要があり、今

for (int i = 0; i < 10; i++) 
{ 
// The rest of the application's code 
} 

、インクリメント "i ++"これを行うと、forステートメントでは ";;"だけが表示されます。

for (;;) 
{ 
// The rest of the application's code 
} 
+1

技術的には、ループを無限にするには、削除する必要があるのは条件(i <10)だけです。 –

0

無限ループの通常の使用です。 ループ内でコードを何回実行する必要があるかわからない場合は、このループを使用します。したがって、このループから抜けるための条件も定義する必要があります。あなたは、変数TotalReceivedDataに保存されているあなたの完全な受信したメッセージを使用することができます

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> 
} 

そしてここに:ここ は、サーバからの長いメッセージを受信する例です。

私はこのようなケースに遭遇したので、この例を追加しました。

関連する問題

 関連する問題