Textbox auf leer/null prüfen



  • Hallo,

    wie wird eine Textbox korrekt auf "leer" ("", null, string.Empty) geprüft?

    if (textbox.Text != "")
    {
    	//
    }
    
    if (!string.IsNullOrWhiteSpace(textbox.Text))
    {
    	//
    }
    
    if (!string.IsNullOrEmpty(textbox.Text)) 
    {
    	//
    }
    

    Und wie leer man eine Textbox richtig?

    textbox.Text = "";
    
    // oder
    
    textbox.Text =string.Empty();
    


  • Prüfen auf leer (ab .NET 4.0):

    String.IsNullOrWhiteSpace(this.textBox1.Text);
    

    Prüfen auf leer (vor .NET 4.0):

    String.IsNullOrEmpty(this.textBox1.Text.Trim());
    

    Leeren:

    this.textBox1.Text = "";
    

    (string.Empty ist das gleiche wie "" und nur mehr Schreibarbeit)



  • GPC schrieb:

    Prüfen auf leer (ab .NET 4.0):

    String.IsNullOrWhiteSpace(this.textBox1.Text);
    

    Prüfen auf leer (vor .NET 4.0):

    String.IsNullOrEmpty(this.textBox1.Text.Trim());
    

    Eine Nullreferenz ist meistens ein Bug, und diese Funktionen schlucken den Fehler stillschweigend, bzw. suggeriert ihre Verwendung, daß null für das Argument ein legitimer Wert wäre.

    TextBox.Text ergibt außerdem nie null , und selbst wenn es null wäre, dann würde schon textBox1.Text.Trim() eine NullReferenceException werfen.

    Außerdem fragte der Fragesteller nach '"leer" ("", null, string.Empty)', was nicht dasselbe ist wie Whitespace. "Prüfen auf leer" ist einfach textBox1.Text == "" .



  • audacia schrieb:

    Eine Nullreferenz ist meistens ein Bug,

    WTF? Nein, eine Nullreferenz ist nicht meistens ein Bug. Es kann einer sein, muss aber definitiv nicht sein.

    TextBox.Text ergibt außerdem nie null ,

    Das ist mir klar und daher wird auch nie ein NullReferenceException durch Trim() ausgelöst. Wo ist das Problem? Weil man String.IsNullOrWhitespace nutzt, anstatt nur auf "" zu prüfen?

    Außerdem fragte der Fragesteller nach '"leer"

    Ob ein string "leer" ist, hängt immer davon ab, wie man "leer" definiert. In den meisten Anwendungsfällen ist auch der String " " als leer einzustufen.
    Wenn ich ein Formular für Benutzereingaben habe und unter dem Feld Kommentar wird (warum auch immer) der String " " eingegeben, dann ist das für mich "leer" und zu ignorieren.

    Ziemlich spitzfindiger und Kommentar von dir, etwas ungewohnt aber whatever.



  • GPC schrieb:

    WTF? Nein, eine Nullreferenz ist nicht meistens ein Bug.

    In meinem Code schon. Besonders dann, wenn es sich um einen Referenztypen handelt, für den ein offensichtlicher empty value wie "" existiert. Aber klar, es gibt Anwendungsfälle für Nullreferenzen, daher "meistens".

    Mein Problem mit den IsNullOr...() -Funktionen ist, wie oben geschrieben, daß der Name suggeriert, daß das übergebene Argument null sein könnte, was ich für irreführend halte. Ich gebe zu, das ist sehr spitzfindig.

    GPC schrieb:

    Außerdem fragte der Fragesteller nach '"leer"

    Ob ein string "leer" ist, hängt immer davon ab, wie man "leer" definiert.

    Na, er hat doch extra drei Beispiele mitgegeben, die ich auch zitiert habe, und du in deinem Zitat meines Zitats extra abgeschnitten hast 🙂

    GPC schrieb:

    Ziemlich spitzfindiger und Kommentar von dir

    Stimmt. Sorry, ich wollte dir nicht auf die Füße treten.



  • audacia|off schrieb:

    Mein Problem mit den IsNullOr...() -Funktionen ist, wie oben geschrieben, daß der Name suggeriert, daß das übergebene Argument null sein könnte, was ich für irreführend halte. Ich gebe zu, das ist sehr spitzfindig.

    Klar, man kann schon hingehen und sagen "Die Text-Property ist nie null, also reicht es auch, wenn man auf "" prüft und das war's dann.". Finde ich nicht so prickelnd, weil man dann nur genau einen Fall abprüft, aber wenn man wirklich nur diesen einen Fall braucht, dann von mir aus.

    audacia|off schrieb:

    ]Na, er hat doch extra drei Beispiele mitgegeben, die ich auch zitiert habe, und du in deinem Zitat meines Zitats extra abgeschnitten hast 🙂

    Das war eigentlich keine Absicht, sorry. Die Erfahrung hat mich nur gelehrt, dass in der echten Welt "leer" nicht nur "" ist, sondern meistens noch mehr, wie z.B. eben " " oder auch "\n" usw.
    Streng genommen im Sinne des OP ist natürlich nur "" als leer anzusehen. Ich halte das eben für etwas kurz gegriffen.

    audacia|off schrieb:

    Stimmt. Sorry, ich wollte dir nicht auf die Füße treten.

    Macht nix, hab's vmtl. auch etwas falsch aufgefasst. Also alles gut 👍