• Home
  • |
  • Blog
  • |
  • C# Tutorial [8/17] – Benutzer-Eingaben abfragen (C# Console ReadLine)

C# Tutorial [8/17] – Benutzer-Eingaben abfragen (C# Console ReadLine)

Zuletzt aktualisiert: Juni 28, 2023

In diesem Beitrag wirst du lernen, wie man die C# Console ReadLine Methode dafür nutzen kann, um Eingaben des Benutzers abzufragen. Dadurch können wir jeder Person die Interaktion mit unserem C# Programm ermöglichen.

Doch was bedeutet das in der Praxis? Das werde ich dir anhand der folgenden Beispiele zeigen.

Sie sehen gerade einen Platzhalterinhalt von Youtube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

Inhaltsverzeichnis

1. Wofür benötigen wir Benutzereingaben?

In der Praxis kommt es oftmals vor, dass wir in der Konsole eine Eingabe des Benutzers abfragen müssen. Zum Beispiel wenn es darum geht, einen Benutzernamen oder ein Geburtsdatum in ein Programm einzugeben. Neben diesen Beispielen existieren natürlich noch zahlreiche weitere.

Du siehst also: Die Benutzereingabe ist ein ziemlich wichtiges und spannendes Thema.

2. Die C# Console ReadLine Methode

Für die Abfrage einer Benutzereingabe in der Konsole verwendet man in C# Console ReadLine. Dabei handelt es sich um eine Methode, die den Eingabestrom als einen String liest, bis der Benutzer die Enter-Taste drückt und damit einen Zeilenumbruch auslöst.

Die Eingabe, die der Benutzer in die Konsole schreibt, gibt Console.ReadLine() als String zurück. Damit du dir das Ganze besser vorstellen kannst, sehen wir uns die Thematik einmal anhand eines Beispiels in Visual Studio an.

Wie bereits erwähnt, lesen wir mithilfe der C# Console ReadLine Methode den Eingabestrom des Benutzers. Also genau das, was der Benutzer in die Konsole eingibt. Erst wenn dieser Enter drückt, ist der Eingabestrom beendet. Das Gelesene geben wir an den Aufrufer zurück, wodurch wir es verarbeiten können.

In der Praxis können wir das zum Beispiel folgendermaßen umsetzen:

c# console readline beispiel 1

Zunächst erzeugen wir eine Variable namens "eingabe". Dieser Variable weisen wir den Rückgabewert der C# Console ReadLine Methode zu.

Anschließend schreiben wir Console.WriteLine und trennen das Ganze mit einer Strichlinie von dem, was wir ausgeben lassen möchten. Für unser Beispiel lassen wir nun dreimal die Eingabe des Nutzers ausgeben:

beispiel weiter ausgebaut

Beim Starten des Programms sehen wir, dass in der Konsole zunächst nichts steht. Das liegt eben daran, weil wir direkt in der ersten Anweisung die C# Console ReadLine Methode aufgerufen haben.

Das heißt, dass das Programm an dieser Stelle stoppt und den Eingabestrom abfragt. Der Benutzer, in diesem Fall also wir, müssen nun etwas in die Konsole eingeben. Ich gebe hier nun „Mein Name ist Janek“ ein.

über c# console readline eine benutzereingabe einlesen

Wenn ich anschließend auf Enter drücke, wird das Programm weiter abgearbeitet und gibt tatsächlich dreimal den String „Mein Name ist Janek“ unter der Strichlinie aus:

konsolenausgabe des beispiels
Zusammengefasst arbeitet die C# Console ReadLine Methode also wie folgt: Sobald die C# Console ReadLine Methode aufgerufen wird, stoppt das Programm und fordert den Nutzer auf, etwas über die Konsole einzugeben. Das Programm liest die Eingabe als String ein und sobald wir Enter drücken, gibt die Methode den eingegebenen Wert als String zurück. In diesem Fall wird er direkt an die Variable eingabe zugewiesen. Den in der Variable gespeicherten Wert können wir nun entsprechend in unserem Programm weiterverarbeiten.

2.1. Einen Benutzernamen abfragen

An dieser Stelle möchte ich dir nun zeigen, wie die Abfrage eines Benutzernamens beispielsweise aussehen kann.

Dafür lassen wir zunächst einmal in der Konsole ausgeben: „Gebe einen Benutzernamen ein:“. Anschließend soll man direkt in derselben Zeile seinen Namen eingeben können. Diesen Namen soll das Programm dann in der Konsole ausgeben.

Wie setzen wir das am besten um? Zuerst brauchen wir eine String Variable für den Usernamen. Diese deklarieren wir und schreiben anschließend „Gebe deinen Benutzernamen ein:“.

benutzernamen abfragen 1

Jetzt möchten wir aber, dass man als Benutzer seinen Namen nicht in der nächsten Zeile eingibt, sondern noch in derselben. Um das umzusetzen, ist es ganz wichtig, nicht Console.WriteLine() zu schreiben, weil das automatisch einen Zeilenumbruch auslöst.

Stattdessen schreiben wir lediglich Console.Write(). Wenn wir „Write“ schreiben, kommt es zu keinem Zeilenumbruch. Mit dem Zusatz „Line“ hingegen schon. Damit wir also direkt nach dem Doppelpunkt unseren Namen eingeben können, verwenden wir Console.Write:

benutzernamen abfragen 2

Nun möchten wir den Namen abfragen und in die Variable username schreiben. Doch wie gehen wir hierfür vor? Ganz einfach:

benutzernamen abfragen 3 c# console readline verwenden

Somit liest das Programm den Benutzernamen ein und mit Drücken der Enter-Taste speichert es den gelesenen String in die Variable username.

Anschließend können wir in der Konsole den String „Hallo“ und zusätzlich den eingegebenen Usernamen ausgeben lassen:

benutzernamen abfragen 4

Wenn wir jetzt das Programm starten, sehen wir zunächst die Aufforderung, einen Benutzernamen einzugeben:

benutzernamen abfragen 5

Wenn ich an dieser Stelle beispielhaft „Janek“ eingebe und Enter drücke, sehen wir in der Konsole „Hallo Janek“:

benutzernamen abfragen 6

Jetzt weißt du also, wie man String Werte in der Konsole vom Benutzer abfragen kann. Allerdings wollen wir natürlich nicht nur String Werte lesen, sondern auch Werte von anderen Datentypen.

Zum Beispiel könnten wir das Programm so erweitern, dass der Benutzer auch noch sein Alter eingeben soll. Das Alter schreiben wir dann in eine Variable vom Typ Integer und nennen diese age.

Wie gehen wir nun vor? Wir können in diesem Fall nicht wie im vorherigen Beispiel age = Console.ReadLine schreiben, da in C# Console ReadLine einen String Wert zurückgibt. Die Variable age ist allerdings vom Datentyp Integer und ein String lässt sich schließlich nicht in einen Integer speichern. Das Problem können wir dennoch auf eine andere Art und Weise lösen.

Dafür löschen wir nun die Ausgabe mit Console.WriteLine(“Hallo “ + username) und schreiben noch zusätzlich, dass man sein Alter eingeben soll:

benutzernamen abfragen 7

Danach möchten wir in die Variable age das speichern, was uns das Programm durch Console.ReadLine zurückgibt:

benutzernamen abfragen 8

Wie du siehst, erhalten wir jetzt einen Fehler. Denn wie bereits erwähnt, gibt in C# Console ReadLine einen String zurück.

Das heißt: Das, was uns als String zurückgegeben wird, müssen wir noch irgendwie in einen Integer konvertieren. Und genau dafür gibt es eine sehr nützliche Klasse im .NET-Framework, die sich „Convert“ nennt.

3. Die Convert-Klasse

Die Convert-Klasse enthält zahlreiche Methoden.

Mit einer davon können wir beispielsweise einen String Wert in einen Integer konvertieren. Das funktioniert mit Convert.ToInt32(). Wir möchten also das, was wir als Parameter übergeben, in einen 32 Bit Integer konvertieren.

Zur Info: Bei dem 32 Bit Integer handelt es sich im Grunde einfach um den normalen Datentyp int.

In unserem Beispiel übergeben wir nun als Parameter den String Wert, den wir konvertieren möchten. Und das ist wiederum der Wert, den wir über die Konsole mit Console.ReadLine() entgegennehmen. Der konvertierte Wert wird anschließend der Variable age zugewiesen:

benutzernamen abfragen 9

Dadurch ist nun sichergestellt, dass es bei der Programmausführung zu keinem Fehler kommt.

Zum Schluss können wir die Werte dann noch auf der Konsole ausgeben lassen.

benutzernamen abfragen 10

Starten wir das Programm jetzt erneut, werden wir dazu aufgefordert, einen Benutzernamen und anschließend ein Alter einzugeben:

beispiel ausführen

Wenn wir das tun, erhalten wir im Nachhinein die folgende Ausgabe und sehen, dass es einwandfrei funktioniert:

ausgabe des beispiels

Du hast also hier noch einmal gesehen, wie man mithilfe der Convert-Klasse einen Integer Wert aus einem String Wert erzeugen und somit den String in einen Integer konvertieren kann.

Die Convert-Klasse hat natürlich nicht nur für 32 Bit Integer Convert-Methoden, sondern auch für viele andere Datentypen, die man sich bei Bedarf noch ansehen kann.