Debug build matches to (true). Use a reflector and you can see the results.
static void Main(string[] args) { ExecuteWhile(); ExecuteFor(); } private static void ExecuteFor() { for (; ; ) { Console.WriteLine("for"); string val = Console.ReadLine(); if (string.IsNullOrEmpty(val)) { Console.WriteLine("Exit for."); break; } } } private static void ExecuteWhile() { while (true) { Console.WriteLine("while"); string val = Console.ReadLine(); if (string.IsNullOrEmpty(val)) { Console.WriteLine("Exit while."); break; } } }
Testing the ExecuteFor method in the reflector.
private static void ExecuteFor() { while (true) { Console.WriteLine("for"); if (string.IsNullOrEmpty(Console.ReadLine())) { Console.WriteLine("Exit for."); return; } } }
An optimized version of the same code gives different results for ExecuteFor
private static void ExecuteFor() { do { Console.WriteLine("for"); } while (!string.IsNullOrEmpty(Console.ReadLine())); Console.WriteLine("Exit for."); }
For details, here is the optimized ExecuteWhile ...
private static void ExecuteWhile() { do { Console.WriteLine("while"); } while (!string.IsNullOrEmpty(Console.ReadLine())); Console.WriteLine("Exit while."); }
Wil P Jul 27 2018-10-10T00: 00Z
source share