Eine kurze Erklärung der Verwendung von Builder- und Buffer-Klassen in C#

巴扎黑
Freigeben: 2017-05-15 09:27:14
Original
3215 Leute haben es durchsucht

In diesem Artikel wird kurz die Verwendung der drei Klassen StringBuilder und StringBuffer in C# vorgestellt.

String, StringBuilder und StringBuffer sind eine eingehende Untersuchung. Viele Leute sagen vielleicht, wenn es nicht funktioniert, verwenden Sie einfach StringBuilder, und nichts wird passieren. Ich kann nicht sagen, dass Ihre Idee falsch ist, aber ich kann bessere Vorschläge machen. Nachfolgend finden Sie eine kurze Einführung in diese drei Kategorien.

String-Klasse

In unserem täglichen Gebrauch übersieht man leicht, dass der Code, den wir schreiben, leicht in eine Box eingefügt werden kann Typ zum Referenztyp). Eine sehr häufige Zeichenfolgenverkettung

string str=9+"test"; lässt sich beispielsweise anhand des IL-Codes erkennen, dass hier eine Boxing-Operation stattgefunden hat. Es wird daher empfohlen, es zu verwenden (denken Sie daran, die ToString-Methode zu verwenden, wenn Sie den Werttyp in einen String konvertieren). Wenn Sie also normalerweise Code schreiben, sollten Sie auf die Vorgänge des Boxens und Unboxens achten (die später eingeführten generischen Sammlungen dienen lediglich der Lösung der Vorgänge des Boxens und Unboxens). Der Prozess der Boxoperation: Legen Sie den Werttyp in den verwalteten Heap, um Speicher zuzuweisen. Zusätzlich zum vom Werttyp selbst zugewiesenen Speicher muss der Gesamtspeicher auch den vom Typobjektzeiger und Synchronisierungsindexblock belegten Speicher hinzufügen dann der Wert Der Wert des Typs wird dem Heapspeicher neu zugewiesen und schließlich wird die Adresse des Objekts des Referenztyps zurückgegeben.

Wir wissen, dass viele Typen (Werttypen) mit einer ToString-Methode ausgestattet sind. Es ist eine einfache Wahrheit, dass der Werttyp etwas Besonderes ist. Obwohl es sich um einen Referenztyp handelt), hat der Designer der C#-Sprache, um dies zu erreichen, diese Methode

entwickelt, um das String-Objekt in einen Werttyp umzuwandeln, der nach der Zuweisung nicht mehr geändert werden kann (aufgerufen die Konstanz der Zeichenfolge), nachdem die Zuweisung abgeschlossen ist und die Zeichenfolge gespleißt, zugewiesen usw. wird, wird ein neuer Speicherplatz im Speicher neu zugewiesen.

StringBuilder

Basierend auf dem oben genannten Problem weist die String-Klasse bei Neuzuweisung Speicherplatz neu zu. Um dieses Problem zu lösen, hat Microsoft Eine StringBuilder-Klasse gestartet. Sie können sehen, dass die StringBuilder-Klasse den Speicher nicht neu zuordnet.

Durch Lesen der Implementierung der StringBuilder-Klasse können wir feststellen, dass die Standardgröße der

   internal const int DefaultCapacity = 0x10; StringBuilder-Klasse 16 beträgt, was bedeutet, dass wir die Länge von StringBuilder nicht angeben und diese überschreiten 16 Längen, es wird erneut Speicher zugewiesen. Für eine spezifische Implementierung können Sie sich den Append-Quellcode der StringBuilder-Klasse ansehen.

Aus dem Code ist ersichtlich, dass wir bei der üblichen Verwendung von StringBuilder die entsprechende Länge angeben müssen. Der feste Anweisungsblock im Quellcode (für Laien kann man die Garbage Collection deaktivieren und die Variablenadresse recyceln).

Zusammenfassung: Beim Schreiben von Code sollten Sie auf Box- und Unboxing-Vorgänge sowie auf die Verwendung von stringBuilder achten.

[Verwandte Empfehlungen]

1. Besondere Empfehlung: "php Download der Version „Programmer Toolbox“ V0.1

2. ASP kostenloses Video-Tutorial

3

Das obige ist der detaillierte Inhalt vonEine kurze Erklärung der Verwendung von Builder- und Buffer-Klassen in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage