Comment append deux ssortingngBuilders?

Est-il possible d’append deux générateurs de chaînes? Et si oui – fonctionne-t-il mieux que d’append une chaîne à un SsortingngBuilder?

Juste comme ça….

SsortingngBuilder sb = new SsortingngBuilder(); SsortingngBuilder sb1 = new SsortingngBuilder(); sb.Append(sb1.ToSsortingng()); 

Je sais que c’est trois ans plus tard, mais le .NET 4 SsortingngBuilder se comporte différemment de toute façon.

Néanmoins, il revient toujours à “que voulez-vous faire?” Cherchez-vous simplement la manière la plus performante d’append deux SsortingngBuilders et de continuer avec ce dernier résultat? Ou vous attendez-vous à continuer à travailler avec la valeur en mémoire tampon existante de SsortingngBuilder ajouté?

Pour le premier et toujours dans .NET 4,

 frontSsortingngBuilder.Append(backSsortingngBuilder); 

est le meilleur.

Pour ce dernier scénario dans .NET 2 / 3.5,

 frontSsortingngBuilder.Append(backSsortingngBuilder.ToSsortingng(0, backSsortingngBuilder.Length)); 

est le meilleur (et ne nuira pas à la performance dans .NET 4).

Cela le fera sans allocations

 SsortingngBuilder sb = new SsortingngBuilder("aaaa"); SsortingngBuilder second = new SsortingngBuilder("bbbbb"); sb.EnsureCapacity(sb.Length + second.Length); for (int i = 0; i < second.Length; i++) { sb.Append(second[i]); } 

Vous n’avez pas besoin d’appeler .ToSsortingng (). Vous devriez simplement append l’un à l’autre. C’est tout. Ce sera mieux contre l’appel direct de .ToSsortingng () pour la raison suivante:

1) SsortingngBuilder n’a pas de constructeur avec SsortingngBuilder en tant que param, ssortingng, int / ssortingng, etc. SsortingngBuilder remplaçant .ToSsortingng () et en conséquence:

 SsortingngBuilder sb1 = new SsortingngBuilder("1"); sb1.Append(new SsortingngBuilder("2")); Console.WriteLine(sb1); 

ce code appellera automatiquement la version surchargée de .ToSsortingng (). La sortie sera “12”;

2) Si SsortingngBuilder sera ajouté en tant que paramètre entrant au constructeur SsortingngBuilder dans les prochaines versions du framework, votre code sera clair et prêt à être ajouté sans aucun refactoring.

Bonne journée!

Tout simplement comme ça:

 firstSsortingngBuilder.Append(secondSsortingngBuilder.ToSsortingng()); 

Si SsortingngBuilder est grand, cela minimisera les allocations de chaînes (surtout si vous pouvez fournir un tampon de caractère réutilisable):

  public static void CopyTo(this SsortingngBuilder source, SsortingngBuilder dest) { char[] buffer = new char[Math.Min(source.Length, 1024)]; CopyTo(source, dest, buffer); } public static void CopyTo(this SsortingngBuilder source, SsortingngBuilder dest, char[] buffer) { dest.EnsureCapacity(dest.Length + source.Length); for (int i = 0; i < source.Length; i += buffer.Length) { int charCount = Math.Min(source.Length - i, buffer.Length); source.CopyTo(i, buffer, 0, charCount); dest.Append(buffer, 0, charCount); } }