Thomas Bandt

Über mich | Kontakt | Archiv

Bevor man sich den Strick nimmt ... lieber ToString()

Wie ist das immer? 90 Prozent der Arbeit erledigt man in 10 Prozent der Zeit, und die restlichen 10 Prozent Arbeit brauchen 90% der Zeit. Gerade eben hat mich der ViewState einige Nerven gekostet, ein Paradebeispiel für diese Weisheit. Was ist an diesem Snippet falsch?

if (ViewState["Sort"] == null || ViewState["Sort"] == sort + " DESC")
{
   sort += " ASC";
}
else
{
   sort += " DESC";
}

Laut Compiler nichts. Er kompiliert 1a ... nur springt er leider nie in den zweiten Zweig, auch wenn die obere Bedingung er füllt scheint. Warum nicht? Tja, weil der Stringvergleich einfach fehl schlägt ... Es muss also

if (ViewState["Sort"] == null || ViewState["Sort"].ToString() == sort + " DESC")

heißen. Ein verhängnisvoller kleiner Fehler, der auch nach 2 Jahren C# noch passiert ...

Kommentare

  1. blog@geniali.ch (Roland Schumacher) schrieb am Dienstag, 4. April 2006 07:38:00 Uhr:

    Ich hätte jetzt auf fehlende Klammern getippt.
    if((ViewState["Sort"] == null) || (ViewState["Sort"] == sort +" DESC"))

    Auf das ToSting() wäre ich jetzt auch nicht so schnell gekommen. :-)


« Zurück  |  Weiter »