[C#] Hjälp mig förstå varför den här koden fungerar
Nedan visas en enkel meny som styrs med piltangenterna.
string[] menuOptions = new string[] { "One", "Two" };
int menuSelect = 0;
while (true)
{
Console.Clear();
Console.CursorVisible = false;
for (int i = 0; i < menuOptions.Length; i++)
{
Console.WriteLine((menuOptions[i] + (i == menuSelect ? "<--" : ""));
}
var keyPressed = Console.ReadKey();
if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 1)
{
menuSelect++;
}
else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect >= 1)
{
menuSelect--;
}
Jag läser den så här:
När menuSelect och menuOptions båda har samma värde visas "<--" på den valda raden.
När programmet startas visas därmed en pil på första alternativet i menyn.
När DownArrow trycks in ökar både menuSelect och menuOptions med 1, varav en pil visas på alternativ två i menyn.
Om UpArrow nu trycks in går menuSelect tillbaka från 1 till 0, medan menuOptions ökar från 1 till 2 då det är den tredje iterationen av for-loopen.
Frågan: Hur kan programmet då se till att menuSelect och menuOptions har samma värde igen efter de två första iterationerna när det inte finns något som synkar menuSelect och menuOptions med varandra? menuOptions ökar ju blint för varje iteration, oavsett vilken tangent som trycks in.