Stringbuilder Objekt an return-Anweisung
-
Hallo,
wie kann ich den String von Stringbuilder mit der return-Anweisung zurückgeben?public class StudieGruppe { private ArrayList studies = new ArrayList(); .... public override string ToString() { StringBuilder sb = new StringBuilder(); foreach( Studie aktStudie in studies ) sb.Append(aktStudie); return sb; //das funktioniert nicht, aber warum?? } } public class Studie : IComparable<Studie> { ... public override string ToString() { return nachName + Environment.NewLine + vorName + Environment.NewLine + matrNummer + Environment.NewLine + Environment.NewLine; } }/* class Studie {.. */
Das ganze soll dann später in einer Textbox ausgegeben werden, in etwa so:
txtBox.Text = StudieGruppe;
Vielen Dank
-
Johann2 schrieb:
return sb; //das funktioniert nicht, aber warum??
Warum wohl? ToString will das du ein String zurückgibst und nicht einen StringBuilder und da ein StringBuilder kein String ist, wird es wohl nicht funktionieren.
Daher schreibreturn sb.ToString();
-
ok danke^^
hatte ToString auhc vorher stehen, nur hab halt die Klammern () vergessen deswegen gings nicht..
-
Nur ein kleiner Tip: wenn du den String-Builder "recyclen" willst, also leeren und dann nen neuen String darin aufbauen, dann geht das einfach mit
sb.Length = 0;
Ich hatte erwartet eine Clear() oder Reset() Funktion vorzufinden, und dann einigermassen lange gesucht, bis ich die Lösung gefunden hatte.
(OK, waren dank Google nur ein paar Minuten, aber ein paar total unproduktive und verschwendete Minuten)
-
Mit .net 4 gibts jetzt auch eine .Clear Methode.
-
hustbaer schrieb:
Nur ein kleiner Tip: wenn du den String-Builder "recyclen" willst, also leeren und dann nen neuen String darin aufbauen, dann geht das einfach mit
sb.Length = 0;
Ich hatte erwartet eine Clear() oder Reset() Funktion vorzufinden, und dann einigermassen lange gesucht, bis ich die Lösung gefunden hatte.
(OK, waren dank Google nur ein paar Minuten, aber ein paar total unproduktive und verschwendete Minuten)Du kannst sogar mit
sb.Length--;
das letzte Zeichen aus dem Puffer entfernen.
-
Firefighter schrieb:
Mit .net 4 gibts jetzt auch eine .Clear Methode.
Sehr schön
Macht die das gleiche wie.Length = 0
, oder gibt die den internen Puffer ganz frei?
-
Hehe da haben sie es sich relativ einfach gemacht.
Wie folgt sieht die neue Funktion aus:public StringBuilder Clear() { this.Length = 0; return this; }
Also wie erwartet.