C# Programming

Robuste String-zu-Boolean-Konvertierung in C#

Spread the love

Inhaltsverzeichnis

Robuste Boolean-Konvertierung mit bool.TryParse()

Die Konvertierung von Strings in Boolean-Werte ist eine häufige Aufgabe in C#, insbesondere bei der Verarbeitung von Benutzereingaben oder externen Datenquellen. Strings repräsentieren oft implizit Boolean-Zustände („true“, „false“, „1“, „0“). Der robusteste Ansatz nutzt die Methode bool.TryParse().

bool.TryParse() versucht die Konvertierung, ohne Ausnahmen zu werfen. Bei Erfolg gibt sie true zurück und speichert den resultierenden Boolean-Wert in einem out-Parameter; andernfalls gibt sie false zurück. Dies ermöglicht eine elegante Fehlerbehandlung.


string strTrue = "True";
string strFalse = "false";
string invalidString = "hello";
bool result;

if (bool.TryParse(strTrue, out result))
{
    Console.WriteLine($"Konvertierung erfolgreich: {result}"); // Ausgabe: Konvertierung erfolgreich: True
}
else
{
    Console.WriteLine("Konvertierung fehlgeschlagen");
}

if (bool.TryParse(strFalse, out result))
{
    Console.WriteLine($"Konvertierung erfolgreich: {result}"); // Ausgabe: Konvertierung erfolgreich: False
}
else
{
    Console.WriteLine("Konvertierung fehlgeschlagen");
}

if (bool.TryParse(invalidString, out result))
{
    Console.WriteLine($"Konvertierung erfolgreich: {result}");
}
else
{
    Console.WriteLine("Konvertierung fehlgeschlagen"); // Ausgabe: Konvertierung fehlgeschlagen
}

Diese Methode wird wegen ihrer Fehlertoleranz empfohlen, da sie Abstürze durch unerwartete Eingaben verhindert. Sie können Konvertierungsfehler entsprechend behandeln, z. B. informative Fehlermeldungen anzeigen oder Standard-Boolean-Werte verwenden.

Direkte Konvertierungsmethoden: bool.Parse() und Convert.ToBoolean()

Während bool.TryParse() wegen seiner Robustheit bevorzugt wird, bieten bool.Parse() und Convert.ToBoolean() prägnantere, wenn auch weniger fehlertolerante Alternativen.

bool.Parse() konvertiert einen String direkt. Es akzeptiert „True“, „False“, „true“, „false“, „1“ und „0“ (Groß-/Kleinschreibung bei „True“ und „False“ unwichtig) und wirft eine FormatException bei ungültigen Eingaben.


string strTrue = "True";
bool boolTrue = bool.Parse(strTrue); // true

Convert.ToBoolean() verhält sich ähnlich, behandelt aber null-Eingaben, indem es false zurückgibt und so eine ArgumentNullException vermeidet.


string strNull = null;
bool boolNull = Convert.ToBoolean(strNull); // false

Beide Methoden sind jedoch weniger flexibel und fehleranfälliger als bool.TryParse() bei der Behandlung unerwarteter Eingabe-Strings.

Behandlung verschiedener String-Darstellungen

Es ist wichtig zu berücksichtigen, wie Ihre Anwendung verschiedene String-Darstellungen von Boolean-Werten behandelt. Während die besprochenen Methoden „true“, „false“, „1“ und „0“ akzeptieren, können Variationen wie „yes“, „no“, „Y“, „N“ oder sogar benutzerdefinierte Darstellungen auftreten. In solchen Fällen sollten Sie eine benutzerdefinierte Vorverarbeitung hinzufügen, um den Eingabe-String vor der Konvertierung zu normalisieren, möglicherweise mit einer switch-Anweisung oder einer Dictionary-Suche.

Um beispielsweise „yes“ und „no“ zu berücksichtigen:


string input = "yes";
string normalizedInput = input.ToLower();
bool result;

if (normalizedInput == "yes" || normalizedInput == "true" || normalizedInput == "1")
{
    result = true;
}
else if (normalizedInput == "no" || normalizedInput == "false" || normalizedInput == "0")
{
    result = false;
}
else
{
    // Ungültige Eingabe behandeln
    result = false; // Oder eine Ausnahme werfen
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert