String Vs String Builder:
Lo primero que debes saber es ¿En qué asamblea viven estas dos clases?
Entonces,
la cadena está presente en el System
espacio de nombres.
y
StringBuilder está presente en el System.Text
espacio de nombres.
Para la declaración de cadena :
Tienes que incluir el System
espacio de nombres. algo como esto.
Using System;
y
Para la declaración de StringBuilder :
Tienes que incluir el System.text
espacio de nombres. algo como esto.
Using System.text;
Ahora viene la pregunta real.
¿Cuál es la diferencia entre string y StringBuilder ?
La principal diferencia entre estos dos es que:
La cadena es inmutable.
y
StringBuilder es mutable.
Así que ahora discutamos la diferencia entre inmutable y mutable
Mutable: significa que se puede cambiar.
Inmutable: significa que no se puede cambiar.
Por ejemplo:
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."
}
}
}
Entonces, en este caso, vamos a cambiar el mismo objeto 5 veces.
¡Entonces la pregunta obvia es esa! Lo que realmente sucede debajo del capó, cuando cambiamos la misma cadena 5 veces.
Esto es lo que sucede cuando cambiamos la misma cadena 5 veces.
Miremos la figura.
Explicacion:
Cuando inicializamos esta variable "nombre" a "Rehan", es decir string name = "Rehan"
esta variable se crea en la pila "nombre" y señala ese valor "Rehan". después de ejecutar esta línea: "nombre = nombre +" Shah ". La variable de referencia ya no apunta a ese objeto" Rehan ", ahora apunta a" Shah "y así sucesivamente.
Entonces, string
es inmutable lo que significa que una vez que creamos el objeto en la memoria no podemos cambiarlos.
Entonces, cuando concatenamos la name
variable, el objeto anterior permanece allí en la memoria y se crea otro nuevo objeto de cadena ...
Entonces, de la figura anterior, tenemos cinco objetos, los cuatro objetos se tiran y no se usan en absoluto. Todavía permanecen en la memoria y ocupan la cantidad de memoria. El "recolector de basura" es el responsable de que los recursos de la memoria estén tan limpios.
Entonces, en el caso de una cadena en cualquier momento cuando manipulamos la cadena una y otra vez, tenemos muchos objetos creados y permanecen allí en la memoria.
Entonces esta es la historia de la variable de cadena.
Ahora veamos hacia el objeto StringBuilder.
Por ejemplo:
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."
}
}
}
Entonces, en este caso, vamos a cambiar el mismo objeto 5 veces.
¡Entonces la pregunta obvia es esa! Lo que realmente sucede debajo del capó, cuando cambiamos el mismo StringBuilder 5 veces.
Esto es lo que sucede cuando cambiamos el mismo StringBuilder 5 veces.
Miremos la figura.
Explicación:
en el caso del objeto StringBuilder. no obtendrías el nuevo objeto. El mismo objeto cambiará en la memoria, por lo que incluso si cambia el objeto y dice 10,000 veces, todavía tendremos un solo objeto stringBuilder.
No tiene muchos objetos basura u objetos stringBuilder no referenciados porque se puede cambiar. ¿Es mutable, lo que significa que cambia con el tiempo?
Diferencias:
- String está presente en el espacio de nombres del sistema, mientras que Stringbuilder está presente en el espacio de nombres System.Text.
- La cadena es inmutable donde StringBuilder es mutabe.