Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: C# und .NET ::  Textbox auf leer/null prüfen     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Sonne82
Unregistrierter




Beitrag Sonne82 Unregistrierter 21:16:08 18.05.2017   Titel:   Textbox auf leer/null prüfen            Zitieren

Hallo,

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

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (textbox.Text != "")
{
    //
}
 
if (!string.IsNullOrWhiteSpace(textbox.Text))
{
    //
}
 
if (!string.IsNullOrEmpty(textbox.Text))
{
    //
}


Und wie leer man eine Textbox richtig?
C#:
textbox.Text = "";
 
// oder
 
textbox.Text =string.Empty();
GPC
Global Moderator

Benutzerprofil
Anmeldungsdatum: 11.07.2004
Beiträge: 7439
Beitrag GPC Global Moderator 08:50:55 19.05.2017   Titel:              Zitieren

Prüfen auf leer (ab .NET 4.0):
C#:
String.IsNullOrWhiteSpace(this.textBox1.Text);

Prüfen auf leer (vor .NET 4.0):
C#:
String.IsNullOrEmpty(this.textBox1.Text.Trim());

Leeren:
C#:
this.textBox1.Text = "";


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

_________________
"We're rockstars, not lumberjacks" (Axl Rose about Grunge)
audacia
Mitglied

Benutzerprofil
Anmeldungsdatum: 05.02.2005
Beiträge: 4728
Beitrag audacia Mitglied 16:04:44 20.05.2017   Titel:              Zitieren

GPC schrieb:
Prüfen auf leer (ab .NET 4.0):
C#:
String.IsNullOrWhiteSpace(this.textBox1.Text);

Prüfen auf leer (vor .NET 4.0):
C#:
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 == "".

_________________
"Hey, it compiles! Ship it!"
C++Builder Pages · Typsichere Format-Strings
GPC
Global Moderator

Benutzerprofil
Anmeldungsdatum: 11.07.2004
Beiträge: 7439
Beitrag GPC Global Moderator 08:40:11 22.05.2017   Titel:              Zitieren

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.

Zitat:
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?

Zitat:
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.

_________________
"We're rockstars, not lumberjacks" (Axl Rose about Grunge)
audacia|off
Unregistrierter




Beitrag audacia|off Unregistrierter 19:54:54 22.05.2017   Titel:              Zitieren

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:
Zitat:
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.
GPC
Global Moderator

Benutzerprofil
Anmeldungsdatum: 11.07.2004
Beiträge: 7439
Beitrag GPC Global Moderator 09:23:58 23.05.2017   Titel:              Zitieren

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 :live:

_________________
"We're rockstars, not lumberjacks" (Axl Rose about Grunge)
C++ Forum :: C# und .NET ::  Textbox auf leer/null prüfen   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.