Inhaltsverzeichnis
- Robuste Boolean-Konvertierung mit
bool.TryParse()
- Direkte Konvertierungsmethoden:
bool.Parse()
undConvert.ToBoolean()
- Behandlung verschiedener String-Darstellungen
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
}