String Vs String Builder:
Première chose que vous devez savoir dans quelle assemblée vit ces deux classes?
Alors,
la chaîne est présente dans l' System
espace de noms.
et
StringBuilder est présent dans l' System.Text
espace de noms.
Pour la déclaration de chaîne :
Vous devez inclure l' System
espace de noms. quelque chose comme ça.
Using System;
et
Pour la déclaration StringBuilder :
Vous devez inclure l' System.text
espace de noms. quelque chose comme ça.
Using System.text;
Maintenant, venez la vraie question.
Quelle est la différence entre string et StringBuilder ?
La principale différence entre ces deux est que:
la chaîne est immuable.
et
StringBuilder est mutable.
Voyons maintenant la différence entre immuable et mutable
Mutable:: signifie modifiable.
Immuable:: signifie Non modifiable.
Par exemple:
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."
}
}
}
Donc, dans ce cas, nous allons changer le même objet 5 fois.
Donc, la question évidente est que! Qu'est-ce qui se passe réellement sous le capot, lorsque nous changeons la même chaîne 5 fois.
C'est ce qui se passe lorsque nous changeons la même chaîne 5 fois.
regardons la figure.
Explication:
Lorsque nous initialisons pour la première fois cette variable "nom" en "Rehan", c'est-à string name = "Rehan"
- dire que cette variable est créée sur la pile "nom" et pointe vers cette valeur "Rehan". après l'exécution de cette ligne: "nom = nom +" Shah ". la variable de référence ne pointe plus sur cet objet" Rehan ", elle pointe maintenant sur" Shah "et ainsi de suite.
Il en string
est de même immuable signifiant qu'une fois que nous créons l'objet dans la mémoire, nous ne pouvons pas les changer.
Ainsi, lorsque nous concaténons la name
variable, l'objet précédent reste là dans la mémoire et un autre nouvel objet chaîne est créé ...
Donc, d'après la figure ci-dessus, nous avons cinq objets, les quatre objets sont jetés, ils ne sont pas utilisés du tout. Ils restent en mémoire et ils occupent la quantité de mémoire. "Garbage Collector" est responsable de ce nettoyage si propre que les ressources de la mémoire.
Donc, en cas de chaîne, à tout moment, lorsque nous manipulons la chaîne encore et encore, nous avons de nombreux objets créés et y restons en mémoire.
Voici donc l'histoire de la chaîne Variable.
Regardons maintenant vers StringBuilder Object.
Par exemple:
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."
}
}
}
Donc, dans ce cas, nous allons changer le même objet 5 fois.
Donc, la question évidente est que! Ce qui se passe réellement sous le capot, lorsque nous changeons le même StringBuilder 5 fois.
C'est ce qui se passe lorsque nous changeons le même StringBuilder 5 fois.
regardons la figure.
Explication:
dans le cas d'un objet StringBuilder. vous n'obtiendrez pas le nouvel objet. Le même objet sera changé en mémoire donc même si vous changez d'objet et disons 10 000 fois nous n'aurons toujours qu'un seul objet stringBuilder.
Vous n'avez pas beaucoup d'objets garbage ou d'objets stringBuilder non référencés parce que cela peut être changé. Il est mutable ce qui signifie qu'il change au fil du temps?
Différences:
- La chaîne est présente dans l'espace de noms System où Stringbuilder est présente dans l'espace de noms System.Text.
- chaîne est immuable où StringBuilder est mutabe.