Du kennst Lass mich etwas eingeben schon aus dem Kapitel Konsole - dort liest Console.ReadLine() immer eine ganze Zeile ein und wartet dabei auf Enter. Jetzt, wo du auch Bedingungen und Schleifen kennst, schauen wir uns ein zweites Konsolen-Werkzeug an: Manchmal willst du gar keinen ganzen Text, sondern nur wissen, welche Taste gerade gedrückt wurde - ohne dass extra Enter gedrückt werden muss. Dafür gibt es Console.ReadKey().
Console.ReadKey
Console.ReadKey() hält dein Programm an und wartet auf genau einen Tastendruck - sobald eine Taste gedrückt wird, geht es sofort weiter. Kein Enter nötig.
Console.WriteLine("Drück eine beliebige Taste...");
Console.ReadKey();
Praktisches Beispiel: Zum Beenden eine Taste drücken
Ein sehr häufiger Einsatzzweck: Am Ende eines Programms dafür sorgen, dass das Konsolenfenster nicht sofort wieder verschwindet, bevor du die Ausgabe überhaupt lesen konntest.
Console.WriteLine("Fertig!");
Console.WriteLine("Zum Beenden eine beliebige Taste drücken...");
Console.ReadKey(true);
Herausfinden, welche Taste gedrückt wurde
Willst du wissen, welche Taste es war, speicherst du das Rückgabeergebnis von Console.ReadKey() in einer Variable. Mit .KeyChar bekommst du davon das eingetippte Zeichen:
Console.Write("Drück eine Taste: ");
ConsoleKeyInfo taste = Console.ReadKey();
Console.WriteLine();
Console.WriteLine("Du hast " + taste.KeyChar + " gedrückt.");
Rückblick: Der Taschenrechner
Erinnerst du dich an Schritt 2 im Was können wir schon? Ein Taschenrechner? Dort haben wir das Rechenzeichen mit Console.ReadLine()[0] eingelesen - also eine ganze Zeile gelesen und dann nur das erste Zeichen davon verwendet. Mit dem, was du jetzt über ReadKey weisst, geht das auch direkter:
Console.Write("Rechenzeichen (+ - * /): ");
char operatorZeichen = Console.ReadKey().KeyChar;
Console.WriteLine();
Kurz zusammengefasst: Console.ReadKey() wartet auf genau einen Tastendruck, ganz ohne Enter - praktisch für "beliebige Taste drücken"-Meldungen oder für einzelne Zeichen wie ein Rechenzeichen. Mit .KeyChar holst du dir das eingetippte Zeichen, mit dem optionalen Argument true unterdrückst du die Anzeige der gedrückten Taste.
Weiter geht's mit: Zu viel Text