string(avec un s minuscule) est un alias de l’espace de nom System.String, il n’existe aucune différence entre l’utilisation de String et string tous les niveaux : performance, fonctionnalité … En revanche il existe une bonne différence entre le type string et StringBuilder. string étant immutable, c’est a dire qu’une une variable du type String ne peut pas être modifiée, par contre StringBuilder est mutable. La question que vous vous ête entrain de poser certainement: comment se fait l’affectation d’une valeur a une variable de type string string MySring="test1"; MySring= "test2";
Sachez bien qu’au niveau de la deuxième ligne le contenu de la variable MySring ne va pas être systématiquement remplacé mais une deuxième variable va être créée dans la mémoire et qui va écraser la variable déclarer dans la première ligne ceci provoque une perte en temps et en mémoire ==> perte de performance.
Vous ne sentirez pas la différence si vous avez a faire a une ou deux concaténation par contre si vous essayé de faire des centaine voir des concaténation récursive.
Rien qu’un petit exemple vous permettra de bien comparer les performance:
string
sstring =
""
;
StringBuilder sStringBuilder =
new
StringBuilder();
DateTime dtstringInitial = DateTime.Now;
for
(
int
i = 0; i < 10000; i++)
{
sstring = sstring + i.ToString();
}
DateTime dtstringFinal = DateTime.Now;
TimeSpan stringTimeSpan = dtstringFinal - dtstringInitial;
DateTime dtStringBuilderInitial = DateTime.Now;
sStringBuilder.Append(i.ToString());
DateTime dtStringBuilderfinal = DateTime.Now;
TimeSpan StringBuilderTimeSpan = dtStringBuilderfinal - dtStringBuilderInitial;
Console.Out.WriteLine(
" Time for concat 10000 string in ms: "
+ stringTimeSpan.TotalMilliseconds.ToString());
" Time for concat 10000 StringBuilder in ms: "
+ StringBuilderTimeSpan.TotalMilliseconds.ToString());
Console.ReadLine();
Time for concat 10000 string in ms: 162
Time for concat 10000 StringBuilder in ms: 2