Hallo,
hab mal eine ganz allgemeine Frage. Ich lese hier immer wieder (wie zb heute wieder in dem Datenbank bereich, dass man doch lieber Stringbuilderklassen zum erzeugen eines Strings verwenden sollte, im gegensatz zu einer typischen stringkette mit +
Was hat es damit eigendlich auf sich? Ich persönlich hab Stringbuilder immer für recht sinnlos gehalten, eben wegen der Verkettungsmethode.. aber langsam bin ich mir da auch unsicher. könnt ihr mir helfen?
Danke im voraus!
das liegt an der Art und Weise wie .Net mit Strings umgeht. Sie haben eine kleine Sonderstellung.
hier ist ein bißchen was dazu zu lesen:
Verwenden der StringBuilder-Klasse
StringBuilder and String Concatenation
StringBuilder ist wesentlich performanter.
Das kannst du auch leicht sebst mal ausprobieren.
Schreib einfach ne for-schleife und lass mal 100 oder 1000 mal strings mit + verketten und dann machst das ganze nochmal mit nem StringBuilder. Das Ergebnis spricht für sich.
grüße
MFG Veasel
bis 5-8 verkettungen kannst du getrost mit dem '+' operator machen. alles darüber solltest du unbedingt mit stringbuilder machen.
der lesbarkeitshalber solltest du im falle einer verkettung, die in einer zeile abgearbeitet werden kann (z.b. "hallo mr." + namenvariable + ". willkommen" ), lieber string.Format verwenden (auf das beispiel bezogen: string.Format("hallo mr. {0}. willkommen", namenvariable) )
heute code ich, morgen debug ich und übermorgen cast ich die königin auf int
Hallo YamiSparrow,
Was hat es damit eigendlich auf sich?
das Grundproblem ist, dass das Verketten mit + nach dem Prinzip des Schlemiel the painter's Algorithm arbeitet, also mit quasi quadratischem Aufwand. Das macht sich praktisch gesehen jedoch erst bei vielen langen Strings bemerkbar. Ab bzw. bis wann sich welche Vorgehensweise anbietet, steht in dem von unclesam verlinkten Artikel.
herbivore