String Vs String Builder:
Als erstes muss man wissen, in welcher Versammlung diese beiden Klassen leben?
So,
Zeichenfolge ist im System
Namespace vorhanden.
und
StringBuilder ist im System.Text
Namespace vorhanden.
Für die Zeichenfolgendeklaration :
Sie müssen den System
Namespace einschließen . etwas wie das.
Using System;
und
Für die StringBuilder- Deklaration:
Sie müssen den System.text
Namespace einschließen . etwas wie das.
Using System.text;
Nun kommt die eigentliche Frage.
Was ist der Unterschied zwischen string & StringBuilder ?
Der Hauptunterschied zwischen diesen beiden ist:
Zeichenfolge ist unveränderlich.
und
StringBuilder ist veränderbar.
Lassen Sie uns nun den Unterschied zwischen unveränderlich und veränderlich diskutieren
Veränderliche: : Mittel veränderbare.
Unveränderliche: : Mittel nicht veränderbarer.
Beispielsweise:
using System;
namespace StringVsStrigBuilder
{
class Program
{
static void Main(string[] args)
{
// String Example
string name = "Rehan";
name = name + "Shah";
name = name + "RS";
name = name + "---";
name = name + "I love to write programs.";
// Now when I run this program this output will be look like this.
// output : "Rehan Shah RS --- I love to write programs."
}
}
}
In diesem Fall werden wir also dasselbe Objekt fünfmal ändern.
Die offensichtliche Frage ist also: Was passiert eigentlich unter der Haube, wenn wir die gleiche Saite fünfmal wechseln?
Dies passiert, wenn wir dieselbe Zeichenfolge fünfmal ändern.
Schauen wir uns die Figur an.
Erklärung:
Wenn wir diese Variable "name" zum ersten Mal auf "Rehan" initialisieren, dh string name = "Rehan"
diese Variable wird auf dem Stapel "name" erstellt und zeigt auf diesen "Rehan" -Wert. Nachdem diese Zeile ausgeführt wurde: "name = name +" Shah ". Die Referenzvariable zeigt nicht mehr auf das Objekt" Rehan ", sondern auf" Shah "und so weiter.
So string
ist unveränderlich Bedeutung , dass , wenn wir das Objekt im Speicher erstellen können wir nicht ändern.
Wenn wir also die name
Variable zusammenfassen, bleibt das vorherige Objekt im Speicher und es wird ein weiteres neues Zeichenfolgenobjekt erstellt ...
Aus der obigen Abbildung haben wir also fünf Objekte, die vier Objekte werden weggeworfen, sie werden überhaupt nicht verwendet. Sie bleiben immer noch im Gedächtnis und nehmen die Menge des Gedächtnisses ein. "Garbage Collector" ist dafür verantwortlich, dass die Ressourcen aus dem Speicher entfernt werden.
Im Falle einer Zeichenfolge haben wir also immer dann, wenn wir die Zeichenfolge immer wieder manipulieren, einige viele Objekte erstellt und bleiben dort im Speicher.
Das ist also die Geschichte von String Variable.
Schauen wir uns nun das StringBuilder-Objekt an.
Beispielsweise:
using System;
using System.Text;
namespace StringVsStrigBuilder
{
class Program
{
static void Main(string[] args)
{
// StringBuilder Example
StringBuilder name = new StringBuilder();
name.Append("Rehan");
name.Append("Shah");
name.Append("RS");
name.Append("---");
name.Append("I love to write programs.");
// Now when I run this program this output will be look like this.
// output : "Rehan Shah Rs --- I love to write programs."
}
}
}
In diesem Fall werden wir also dasselbe Objekt fünfmal ändern.
Die offensichtliche Frage ist also: Was passiert eigentlich unter der Haube, wenn wir den gleichen StringBuilder 5-mal ändern?
Dies passiert, wenn wir denselben StringBuilder fünfmal ändern.
Schauen wir uns die Figur an.
Erklärung:
Im Fall eines StringBuilder-Objekts. Sie würden das neue Objekt nicht bekommen. Das gleiche Objekt wird im Speicher geändert. Selbst wenn Sie das Objekt ändern und beispielsweise 10.000 Mal, haben wir immer noch nur ein stringBuilder-Objekt.
Sie haben nicht viele Garbage-Objekte oder nicht referenzierte stringBuilder-Objekte, weil sie geändert werden können. Es ist veränderlich, was bedeutet, dass es sich im Laufe der Zeit ändert?
Unterschiede:
- String ist im System-Namespace vorhanden, während Stringbuilder im System.Text-Namespace vorhanden ist.
- string ist unveränderlich, wenn StringBuilder mutabe ist.