私はそれが無限ループだと仮定することができます。すべての式がない場合、C#forループは何を行いますか。例えばfor(;;){}
3つの式のいずれかをforループに含めることはできますか?省略時のデフォルト値はありますか?
私はそれが無限ループだと仮定することができます。すべての式がない場合、C#forループは何を行いますか。例えばfor(;;){}
3つの式のいずれかをforループに含めることはできますか?省略時のデフォルト値はありますか?
実際には無限ループです。
コンパイラ/ジッタは、これを(単純な)JMP操作に(効果的に)最適化します。
それは事実としても同じです:while式の(真の)部分は通常、しかし、この場合には、比較のいくつかの並べ替えを必要とするため、あります、これはまた離れて最適化されていることを除いて
while (true)
{
}
(
CおよびC++と同じように、3つのうちのいずれか、または3つすべてを省略することができます。
はい、無限ループです。
例:
for (; ;) { }
(別名:カニ)
while (true) { }
do { } while (true)
はい、それは無限ループです。あなたは3つの表現のうちのどれかを除外することができますが、私の経験では一般的に最初の3つの表現のいずれかです。
無限ループです:)。
デフォルトはありません。何も初期化されず、何もインクリメントされず、完了のテストもありません。
無限ループです。効果的には、これと同じ:
while (true)
{
}
最初と3番目の部分にはデフォルトはありません(デフォルトでは何もしなくても動作します)。条件式のデフォルトはtrue
であり、for(;;)
は実質的に無限ループになります。 (デフォルトがfalse
であると想定されていた場合、そのような構造を持つことは無意味でした)。
for (; ;) { }
は無限ループですが、正しいです。
これを使用したい場合は、ループ本体からループを抜けるように条件を設定する必要があります。
for (; ;)
{
if (conditionTrue)
break;
else
continue;
}
Microsoft's C# Programmer's Referenceは言う:
for文の表現は、すべてオプションです
。たとえば、次の文を使用して無限ループを記述します。
for (;;) {
...
}