Merkwürdiger Fehler, globaler Member eines Dialogs & String.Empty



  • Hallo, und zwar rufe ich aus einem Dialog heraus einen anderen auf.

    An sich ja nicht verkehrt, jedoch mache ich nach dem Aufruf eine Prüfung was auf dem 2. Dialog gewählt wurde. Sollte der Rückgabewert leer sein, soll nichts mehr passieren ansonsten soll die Änderung durchgeführt werden.

    Allerdings wird die Änderung durchgeführt und wenn nichts ausgewählt wurde nichts eingetragen was ja falsch wäre.

    Hier mein Code:

    if (frmQualify.ShowDialog() == DialogResult.OK)
    {
             if (frmQualify.reason != String.Empty)
    	{
    	    Button btnQualify = (Button)sender;
    	    if (btnQualify.Name == "btnQualify")
    	    {
    		this.txtDownReason.Text = this.getDownTimeReasonDescription(frmQualify.reasonID);
    	    }
    	    else
    	    {
    		this.txtNewReason.Text = this.getDownTimeReasonDescription(frmQualify.reasonID);
    	    }
    	}
    }
    

    Die Abfrage ob der String leer ist scheint hier einfach übergangen zu werden.



  • inflames2k schrieb:

    Die Abfrage ob der String leer ist scheint hier einfach übergangen zu werden.

    Wenn du mal in Zeile 5 einen Breakpoint setzt, dann kannst du das wohl besser beurteilen als wir hier.



  • Ich glaube nicht, dass der Vergleich an sich funktioniert, man sollte mit String.IsNullOrEmpty(frmQualify.reason) überprüfen, ober das Feld einen Wert hat und ungelich dem Nullstring ist.
    "" Ist (fast) immer ungleich ""

    "" != String.Empty != "a".Remove(0) != "" + "" != "".ToString()
    

    ^(Müsste so richtig sein, kann es aber garantieren)^



  • Ok, es ist ein Null-String. Hät ich mal richtig initialisiert *g* müsst ich nicht wegen meiner Dummheit ins Forum. 😃

    Und nein 😉 halt mich nicht für so dumm wie ichs selbst grad darstelle.



  • Rhombicosidodecahedron schrieb:

    "" Ist (fast) immer ungleich ""

    Strings kann man problemlos mit "==" vergleichen:

    msdn schrieb:

    string ist zwar ein Verweistyp, aber die Gleichheitsoperatoren (== und !=) sind so definiert, dass sie die Werte von string-Objekten und nicht von Verweisen vergleichen.



  • Ja aber mit

    String.IsNullOrEmpty(frmQualify.reason)
    

    wird überprüft ob das object vll. auch null is;)


Anmelden zum Antworten