The C# compiler will transform both
for(;;)
{
// ...
}
and
while (true)
{
// ...
}
into
{
:label
// ...
goto label;
}
The CIL for both is the same. Most people find while(true)
to be easier to read and understand. for(;;)
is rather cryptic.
Source:
I messed a little more with .NET Reflector, and I compiled both loops with the “Optimize Code” on in Visual Studio.
Both loops compile into (with .NET Reflector):
Label_0000:
goto Label_0000;