English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In C# sind String-Typen unveränderlich. Dies bedeutet, dass ein String nach seiner Erstellung nicht geändert werden kann. Zum Beispiel nimmt ein neuer String "Hallo Welt!" Speicherplatz im Heap ein. Wenn Sie den Initialen String von "Hallo Welt!" in "Hallo Welt! von Tutorials Teacher" ändern, wird im Heap ein neuer String-Objekt erstellt,而不是 im gleichen Speicherort den ursprünglichen String ändern. Wenn Sie den ursprünglichen String durch Ersetzen, Anhängen, Löschen oder mehrfaches Einfügen von neuen Zeichenketten ändern, wird dieses Verhalten die Leistung beeinflussen.
Speicherzuweisung von String-Objekten
Um dieses Problem zu lösen, wurde C# StringBuilder im Namespace System.Text eingeführt. StringBuilder erstellt nicht in der Speicherpartition neue Objekte, sondern erweitert dynamisch den Speicher, um den geänderten String zu speichern.
Speicherzuweisung von StringBuilder-Objekten
Sie können ein StringBuilder-Objekt erstellen, indem Sie das new-Schlüsselwort verwenden und eine初始字符串 übergeben. Der folgende Beispiel zeigt die Erstellung eines StringBuilder-Objekts.
using System.Text; //Einführung StringBuilder sb = new StringBuilder(); //Später wird eine Zeichenkette anhängen //oder StringBuilder sb = new StringBuilder("Hello World!");
Oder Sie können auch die überladene Konstruktorfunktion verwenden, um die maximale Kapazität eines StringBuilder-Objekts zu spezifizieren, wie folgt.
StringBuilder sb = new StringBuilder(50); //Später wird eine Zeichenkette anhängen //oder StringBuilder sb = new StringBuilder("Hello World!", 50);
Überhaupt, C#分配iert in der Reihenfolge am meisten50 Leerzeichen. Sobald die angegebene Kapazität erreicht ist, wird diese automatisch verdoppelt. Sie können auch die Eigenschaften capacity oder length verwenden, um die Kapazität oder die Länge eines StringBuilder-Objekts zu setzen oder abzurufen.
Sie können einen for-Zyklus verwenden, um Zeichen an einer bestimmten Indexposition abzurufen oder zu setzen.
StringBuilder sb = new StringBuilder("Hello World!"); for(int i = 0; i < sb.Length;++{ Console.Write(sb[i]); // Ausgabe: Hallo Welt! }
StringBuilder ist kein String. Verwenden Sie die Methode ToString(), um einen String aus einem StringBuilder-Objekt abzurufen.
StringBuilder sb = new StringBuilder("Hello World!"); var greet = sb.ToString(); //"Hallo Welt!"
Verwenden Sie die Append()-Methode, um eine Zeichenfolge an das Ende eines aktuellen StringBuilder-Objekts anzuhängen. Fügt es hinzu, wenn der StringBuilder noch keine Zeichenfolge enthält. Die AppendLine()-Methode fügt ein Zeilenumbruchzeichen am Ende der Zeichenfolge an.
StringBuilder sb = new StringBuilder(); sb.Append("Hello "); sb.AppendLine("World!"); sb.AppendLine("Hello C#"); Console.WriteLine(sb);
Hello World! Hello C#
Verwenden Sie die AppendFormat()-Methode, um eine Eingabezeichenfolge in das angegebene Format zu formatieren und dann hinzuzufügen.
StringBuilder sbAmout = new StringBuilder("Ihr Gesamtbetrag beträgt "); sbAmout.AppendFormat("{0:C} ", 25); Console.WriteLine(sbAmout);//Ausgabe: Ihr Gesamtbetrag beträgt $25.00
Verwenden Sie die Insert()-Methode, um eine Zeichenfolge an der angegebenen Stelle eines StringBuilder-Objekts einzufügen.
StringBuilder sb = new StringBuilder("Hello World!"); sb.Insert(5," C#"); Console.WriteLine(sb); //Ausgabe: Hello C# World!
Verwenden Sie die Remove()-Methode, um vom angegebenen Index bis zur angegebenen Länge Zeichenfolgen zu löschen.
StringBuilder sb = new StringBuilder("Hello World!",50); sb.Remove(6, 7); Console.WriteLine(sb); //Ausgabe: 你好
Verwenden Sie die Replace()-Methode, um alle vorkommenden Zeichenfolgen durch die angegebene Ersetzung zu ersetzen.
StringBuilder sb = new StringBuilder("Hello World!"); sb.Replace("World", "C#"); Console.WriteLine(sb);//Ausgabe: Hello C#!
StringBuilder ist veränderlich.
Beim Anhängen mehrerer Zeichenketten ist die Geschwindigkeit von StringBuilder schneller als die von string.
Verwenden Sie StringBuilder, wenn Sie drei oder mehr Zeichenketten anhängen müssen.
Verwenden Sie die Methode Append(), um eine Zeichenkette zu einem StringBuilder-Objekt hinzuzufügen oder anzuhängen.
Verwenden Sie die Methode ToString(), um eine Zeichenkette aus einem StringBuilder-Objekt abzurufen.