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 nienull
, und selbst wenn esnull
wäre, dann würde schontextBox1.Text.Trim()
eineNullReferenceException
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 nienull
,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 Argumentnull
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 Argumentnull
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