Einführung in StringBuilder in C #

Der folgende Artikel Was ist StringBuilder in C # enthält eine Übersicht über den StringBuilder in C #. Bevor wir uns mit StringBuilder befassen, sehen wir uns zunächst das Konzept der Unveränderlichkeit an. Wenn Sie mit den Strings vertraut sind, wissen Sie wahrscheinlich, dass Strings unveränderlich sind, dh jedes Mal, wenn ein neues Objekt erstellt und ihm ein neuer Speicherort bereitgestellt wird, und somit immer dann, wenn Daten vorliegen Wenn eine Änderung eintritt, müssen die geänderten Daten an einem neuen Speicherort abgelegt und der ursprüngliche String gesichert werden. Nun lasst uns wenig nachdenken. Was ist der Anwendungsfall dieses Ansatzes? Wenn Sie Anmeldeinformationen wie Datenbankdetails festlegen, andere Anmeldeinformationen, die in der Übergangszeit nicht geändert werden, können Sie String verwenden, um sie zu schützen. Jetzt kommt eine andere Art von Objekt, der so genannte StringBuilder, der sich in seiner Natur verändert. Dadurch sparen Sie Speicher, indem Sie nur Daten am aktuellen Speicherort ändern können. Solche Dinge sind praktisch, wenn Sie mehrere Append-Operationen ausführen möchten, die Ihnen in den Weg kommen.

Definition von StringBuilder in C #

StringBuilder ist eine Klasse, die eine veränderbare Menge von Zeichen darstellt und ein Objekt von System ist. Text-Namespace. StringBuilder ist ein dynamisches Objekt. Daher erstellt StringBuilder kein neues Objekt im Speicher, sondern erweitert dynamisch den erforderlichen Speicher, um den geänderten oder neuen String aufzunehmen. String-Builder überzeugen in einer Multithreading-Umgebung nicht, da sie zu Dateninkonsistenzen führen können, wenn sie von mehreren Threads überschrieben werden, wenn das Multithreading-Konzept nicht ordnungsgemäß verwendet wird.

Grundlegendes zu StringBuilder

  1. Jetzt ist der Punkt gekommen, an dem man verstehen soll, zu welchen Ergebnissen die Wandlungsfähigkeit führen kann. Sie sollten die Wandlungsfähigkeit nur dann verwenden, wenn derselbe Datensatz dynamisch erweitert wird. Nehmen wir ein Beispiel, um dieses Szenario zu verstehen.
  2. Wenn Sie einige Daten aus einem HTML-Formular übernehmen, das auf der Grundlage einer Geschäftslogik in einer Tabelle gespeichert werden soll, die zuerst die Daten validiert, können Sie in diesem Fall ein StringBuilder-Objekt erstellen und alle Datenfelder in Verbindung mit dem anhängen Spalten der Datenbank und schließlich kann eine Einfügeabfrage ausführen, um alle in der Datenbank zu platzieren, Vorteil eines solchen Ansatzes ist, dass die ganze Zeit neue Speicherposition nicht zugewiesen werden sollte. Und C # verwaltet diesen einen Speicherort mit dynamischer Erweiterung für Sie.
  3. Sie können auch die Nummernkapazität von StringBuilder in C # angeben.
    StringBuilder s = neuer StringBuilder (10);
    StringBuilder s = neuer StringBuilder ("Objektwert", 15) ;.
  4. Der StringBuilder. Die Eigenschaft Length gibt die Anzahl der Zeichen an, die das StringBuilder-Objekt derzeit enthält. Wenn Sie dem StringBuilder-Objekt Zeichen hinzufügen, wird die Länge erhöht, bis sie der Größe des StringBuilder entspricht.

Wie vereinfacht StringBuilder in C # die Arbeit?

In C # stehen bestimmte Methoden zur Verfügung, die die Arbeit mit StringBuilder vereinfachen. Die StringBuilder-Klasse bietet die folgenden Methoden, um die Aufgabe des Entwicklers zu vereinfachen:

  • Anhängen (String-Wert) - wird verwendet, um einen String-Wert eines Objekts an das Ende des aktuellen StringBuilder-Objekts anzuhängen.

Beispiel -

StringBuilder a = new StringBuilder(“val”, 10);
a.append(“us”) when you do console.writeline(a), it will give you result “value”

  • Anhängen (Format) - wird verwendet, um die Eingabezeichenfolge in das angegebene Format zu formatieren und anschließend anzufügen.

Beispiel -

StringBuilder a = new StringBuilder(“val”, 10);
a.appendFormat(“(0:C)”, 10)

Führen Sie dies bitte aus und analysieren Sie die Abweichung von der einfachen Methode append ().

  • Insert (int index, string value) - Fügt den String am angegebenen Index im StringBuilder-Objekt ein.

Beispiel

StringBuilder a = new StringBuilder(“val”, 10); a.insert(4, ”ue”)

Führen Sie aus und sehen Sie das Ergebnis

  • Es gibt auch andere Methoden und viele Varianten der oben genannten Methoden.

Link: https://docs.microsoft.com/en-us/dotnet/api/system.text.stringbuilder?view=netframework-4.8

Was kann man mit StringBuilder machen?

  • StringBuilder hat viele Eigenschaften, Methoden und Konstruktoren, mit denen Codierungsprobleme behoben werden können. So wie wir den StringBuilder () -Konstruktor gesehen haben, gibt es auch Varianten wie StringBuilder (String, Int32, Int32, Int32) - dies initialisiert eine neue Instanz der StringBuilder-Klasse aus der genannten Teilstring und dessen Kapazität.
  • Es gibt Eigenschaften wie - Länge, Kapazität, maximale Kapazität.
  • Es gibt Methoden wie - appendLine (), Equals (Objekt), GetHashCode (), GetType (), Remove (int32, int32), Replace (char, char), toString ().

All dies macht es zu einer Aufgabe, typische Geschäftsprobleme einfach und mit weniger Codezeilen zu codieren.

Arbeiten mit StringBuilder in C #?

  • Durch die Instanziierung des StringBuilder-Objekts durch Aufrufen des StringBuilder-Konstruktors (Int32, Int32) können Länge und Kapazität der StringBuilder-Instanz über den Wert der MaxCapacity-Eigenschaft hinaus erhöht werden. Dies kann in erster Linie passieren, wenn Sie die Methoden Append (String) und AppendFormat (String, Object) aufrufen, um kleine Zeichenfolgen anzuhängen.
  • Wenn die Anzahl der hinzugefügten Zeichen dazu führt, dass die Länge des StringBuilder-Objekts die aktuelle Kapazität überschreitet, neuer Speicher zugewiesen wird, der Wert der Capacity-Eigenschaft verdoppelt wird, neue Zeichen zum StringBuilder-Objekt hinzugefügt werden und die Length-Eigenschaft angepasst wird.
  • Sobald die maximale Kapazität erreicht ist, ist keine weitere Speicherzuordnung für das StringBuilder-Objekt möglich. Wenn in jedem Fall eine Erweiterung über die maximale Kapazität hinaus erfolgt, wird wahrscheinlich einer der beiden genannten Fehler ausgegeben.

- ArgumentOutOfRangeException.
- OutOfMemoryException-Ausnahme.

Vorteile

  1. Keine Mehrfachspeicherorte, die von C # gepflegt werden müssen.
  2. Dynamische Objekterweiterung bis zur Kapazität.
  3. Es kann in String konvertiert werden und umgekehrt.

Warum sollten wir StringBuilder in C # verwenden?

  • Es ist zu sehen, dass die Zeichenfolge den Concat-Operationen folgt und StringBuilder der Append-Operation folgt und das Anhängen anscheinend schneller ist als Concat, da Concat einen neuen Speicherplatz zuweisen muss, der von StringBuilder nicht ausgeführt werden muss.
  • Wenn die Daten nur vorübergehend sind, also nicht permanent, und bei verschiedenen Aufrufen variieren, kann StringBuilder verwendet werden, vorausgesetzt, Sie arbeiten ohne Multithreading. Andernfalls ist die Thread-Sicherheit ein Problem.

Warum brauchen wir StringBuilder in C #?

Nun, wir haben dies nur in den obigen Punkten diskutiert und man kann hier die Anwendungsfälle ableiten, in denen dies nützlich sein kann.

Fazit

Daher haben wir den Unterschied zwischen String und StringBuilder festgestellt, wann welche und welche Herausforderungen oder Ausnahmen bei der Arbeit mit den StringBuildern auftreten können.

Empfohlene Artikel

Dies war eine Anleitung zu Was ist StringBuilder in C # ?. Hier haben wir das Definieren, Verstehen und Arbeiten in StringBuilder in C # mit Vorteilen und Beispielen besprochen. Warum brauchen wir das? und warum sollten wir es benutzen? Sie können auch unsere anderen Artikelvorschläge durchgehen, um mehr zu erfahren.

  1. StringBuffer vs StringBuilder
  2. C # if-Anweisung
  3. C # do-while-Schleife
  4. C # String-Funktionen