C# – Konsoleneingabe validieren

Dieses Tutorial ist Teil einer dreitiligen Artikelserie zur Konsoleneingabe in C#:

  1. C# – Konsoleneingabe lesen
  2. C# – Konsoleneingabe validieren
  3. C# – Konsoleneingabe mit Ausnahmebehandlung

Im ersten Beispiel zur Eingabe von Werten über die Konsole wurde der Fall berücksichtigt, dass der Nutzer gar nichts eingibt. Er erhielt dann die Aufforderung, zur wiederholten Eingabe seines Namens.

In diesem Beispiel soll der Nutzer eine Ganzzahl eingeben, die mit 10 multipliziert wird. Außerdem soll der Umstand berücksichtigt werden, dass anstelle einer Zahl andere Zeichen eingegeben wurden. Für diesen Fall soll keine Berechnung durchgeführt werden. Dies lässt sich zum Beispiel mithilfe von int.TryParse() realisieren.

Den Anfang macht die Aufforderung zur Eingabe einer Zahl und das Lesen dieser Eingabe mit ReadLine():

Console.WriteLine("Gib eine Zahl ein: ");
var input = Console.ReadLine();

Interessant ist in diesem Zusammenhang noch die Verwendung von var anstelle von string. Der Compiler versucht in diesem Fall den Datentyp selbst zu ermitteln.

Weiter geht es mit dem interessanten Teil dieses Beispiels:

int number;
bool parseNumber = int.TryParse(input, out number);

Es wird versucht, den Eingabewert — mit int.TryParse() — zu parsen (von string zu int). Dies ist erforderlich, da ansonsten die sogleich vorzunehmende Multiplikation nicht funktionieren würde.

Schließlich folgt eine if-Verzweigung, die sicherstellt, dass die Berechnung nur für den Fall durchgeführt wird, dass die Typenumwandlung zu int erfolgreich war:

if (parseNumber)
{
    int result = number * 10;
    Console.WriteLine($"Ergebnis: {result}");
}
else
{
    Console.WriteLine("Es wurde keine Zahl eingegeben!");
}

Wie auch im ersten Beispiel, wird für die Konsolenausgabe auf String Interpolation zurückgegriffen. Der komplette Code sieht nun folgendermaßen aus:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Gib eine Zahl ein: ");
        var input = Console.ReadLine();

        int number;
        bool parseNumber = int.TryParse(input, out number);

        if (parseNumber)
        {
            int result = number * 10;
            Console.WriteLine($"Ergebnis: {result}");
        }
        else
        {
            Console.WriteLine("Es wurde keine Zahl eingegeben!");
        }
    }
}

Im dritten Teil geht es um die Implemetierung einer Ausnahmebehandlung.

Weiterführende Links