Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist StringBuilder in C#

Was ist StringBuilder in C#

WBOY
WBOYOriginal
2024-09-03 15:22:231091Durchsuche

Der folgende Artikel „Was ist StringBuilder in C#“ bietet eine Übersicht über den StringBuilder in C#. Bevor wir über StringBuilder sprechen, werfen wir zunächst einen Blick auf das Konzept der Unveränderlichkeit. Wenn Sie mit den Strings vertraut sind, wissen Sie wahrscheinlich, dass Strings unveränderlicher Natur sind, d Bei einer Datenänderung müssen die geänderten Daten an einem neuen Speicherort abgelegt werden und die ursprüngliche Zeichenfolge bleibt erhalten. Nun lasst uns kurz darüber nachdenken. Was ist der Anwendungsfall dieses Ansatzes? Wenn Sie Anmeldeinformationen wie Datenbankdetails oder andere Anmeldeinformationen festlegen, die in der Übergangszeit nicht geändert werden, können Sie dafür String verwenden, um sie zu schützen. Jetzt gibt es eine andere Art von Objekt, den sogenannten StringBuilder, der von Natur aus veränderbar ist und Ihnen somit Speicherplatz spart, indem er Ihnen ermöglicht, Daten nur am aktuellen Speicherort zu ändern. Solche Dinge sind praktisch, wenn Sie mehrere Anhängeoperationen benötigen.

Definition von StringBuilder in C#

StringBuilder ist eine Klasse, die einen veränderlichen Zeichensatz darstellt und ein Objekt des Systems ist. Text-Namespace. StringBuilder ist von Natur aus ein dynamisches Objekt und daher erstellt StringBuilder kein neues Objekt im Speicher, sondern erweitert dynamisch den erforderlichen Speicher, um die geänderte oder neue Zeichenfolge aufzunehmen. String-Builder scheinen in einer Multithreading-Umgebung nicht überzeugend zu sein, da sie beim Überschreiben durch mehrere Threads zu Dateninkonsistenzen führen können, wenn das Multithreading-Konzept nicht ordnungsgemäß verwendet wird.

StringBuilder verstehen

1. Jetzt kommt der Punkt, an dem man verstehen muss, zu welchen Ergebnissen Veränderlichkeit führen kann. Sie sollten Veränderlichkeit 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, die auf der Grundlage einer Geschäftslogik in einer Tabelle gespeichert werden sollen, die zunächst die Daten validiert, können Sie in diesem Fall ein StringBuilder-Objekt erstellen und alle Datenfelder in Verbindung mit anhängen die Spalten der Datenbank und kann schließlich eine Einfügeabfrage ausführen, um alles in der Datenbank zu platzieren. Der Vorteil eines solchen Ansatzes besteht darin, dass nicht ständig neuer Speicherort 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=new StringBuilder(10);
StringBuilder s=new StringBuilder("object value", 15);

4. Die Eigenschaft StringBuilder.length gibt die Anzahl der Zeichen an, die das StringBuilder-Objekt derzeit enthält. Wenn Sie dem StringBuilder-Objekt Zeichen hinzufügen, erhöht sich seine Länge, bis sie der Größe des StringBuilder entspricht.

Wie macht StringBuilder in C# die Arbeit so einfach?

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

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

Beispiel –

classStringBuilder a = new StringBuilder("val",10);
a.append("us")

Wenn Sie console.writeline(a) ausführen, erhalten Sie das Ergebnis „Wert“

  • Append( Format ) – wird verwendet, um die Eingabezeichenfolge in das angegebene Format zu formatieren und sie anschließend anzuhängen.

Beispiel –

StringBuilder a = new StringBuilder("val",10);
a.appendFormat("{0:C}",10)

Führen Sie dies bitte aus und analysieren Sie die Abweichung von dem, was in der einfachen append()-Methode durchgeführt wurde.

  • Insert( int index, string value ) – fügt die Zeichenfolge am angegebenen Index in das StringBuilder-Objekt ein.

Beispiel

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

Ausführen und das Ergebnis sehen

  • Es gibt auch andere Methoden und viele Varianten der oben genannten Methoden. Weitere Informationen finden Sie unter diesem Link

Was können Sie mit StringBuilder machen?

  • StringBuilder verfügt über viele Eigenschaften, Methoden und Konstruktoren, um Codierungsprobleme zu lösen, wie wir den StringBuilder()-Konstruktor gesehen haben. Es gibt Varianten wie StringBuilder( String, Int32, Int32, Int32) – dadurch wird eine neue Instanz der StringBuilder-Klasse initialisiert aus dem genannten Teilstring und seiner Kapazität.
  • Es gibt Eigenschaften wie – Länge, Kapazität, maximale Kapazität.
  • Es gibt Methoden wie – appendLine(), Equals( object), GetHashCode(), GetType(), Remove( int32, int32), Replacement( char,char), toString().

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

Arbeiten Sie mit StringBuilder in C#?

  • Instanziierung des StringBuilder-Objekts durch Aufrufen des StringBuilder-Konstruktors (Int32, Int32) kann dazu führen, dass die Länge und Kapazität der StringBuilder-Instanz über den Eigenschaftswert MaxCapacity hinaus anwächst. 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 seine aktuelle Kapazität überschreitet, wird neuer Speicher zugewiesen, der Wert der Capacity-Eigenschaft wird verdoppelt, dem StringBuilder-Objekt werden neue Zeichen hinzugefügt und seine Length-Eigenschaft wird erhöht angepasst.
  • Sobald die maximale Kapazität erreicht ist, ist keine weitere Speicherzuweisung für das StringBuilder-Objekt mehr möglich, und wenn in jedem Fall eine Erweiterung über die maximale Kapazität hinaus erfolgt, wird wahrscheinlich einer der beiden genannten Fehler ausgegeben.

ArgumentOutOfRangeException.
OutOfMemoryException.

Vorteile

  • C# muss sich nicht um mehrere Speicherorte kümmern.
  • Dynamische Objekterweiterung bis zur Kapazität.
  • Es kann in String konvertiert werden und umgekehrt.

Warum sollten wir StringBuilder in C# verwenden?

  • Es ist ersichtlich, dass der String den Concat-Operationen folgt und StringBuilder der Append-Operation und dem Anhängen folgt
  • scheint schneller als concat zu sein, da concat neuen Speicherort zuweisen muss, was nicht von StringBuilder erledigt werden muss.
  • Wenn die Daten transient sind, also nicht permanent, und zwischen verschiedenen Aufrufen variieren, kann StringBuilder verwendet werden, vorausgesetzt, Sie arbeiten ohne Multithreading, andernfalls stellt die Thread-Sicherheit ein Problem dar.

Warum brauchen wir StringBuilder in C#?

Nun, wir haben dies nur in den obigen Punkten besprochen 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 gesehen, wann was zu verwenden ist und welche Herausforderungen oder Ausnahmen bei der Arbeit mit StringBuilder auftreten können.

Das obige ist der detaillierte Inhalt vonWas ist StringBuilder in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:C# System.IONächster Artikel:C# System.IO