200 votes

Liste de chaînes de caractères vers une chaîne de caractères

Disons que vous avez un :

List<string> los = new List<string>();

Dans ce monde fonctionnel fou dans lequel nous vivons ces jours-ci, lequel de ces éléments serait le meilleur pour créer une chaîne de caractères en les concaténant :

String.Join(String.Empty, los.ToArray());

StringBuilder builder = new StringBuilder();
los.ForEach(s => builder.Append(s));

string disp = los.Aggregate<string>((a, b) => a + b);

ou Plain old StringBuilder foreach

Ou existe-t-il une meilleure solution ?

282voto

BFree Points 46421

Je choisirais l'option A :

String.Join(String.Empty, los.ToArray());

Mon raisonnement est que la méthode Join a été écrite dans ce but. En fait, si vous regardez Reflector, vous verrez que du code non sécurisé a été utilisé pour l'optimiser. Les deux autres fonctionnent également, mais je pense que la fonction Join a été écrite dans ce but, et je suppose qu'elle est la plus efficace. Mais je peux me tromper...

Comme par @Nuri YILMAZ sans .ToArray() mais il s'agit de .NET 4+ :

String.Join(String.Empty, los);

51voto

Pent Ploompuu Points 4120
string.Concat(los.ToArray());

Si vous souhaitez simplement concaténer les chaînes de caractères, utilisez string.Concat() au lieu de string.Join().

18voto

mnieto Points 1160

Si vous utilisez .net 4.0, vous pouvez utiliser un trieur :

String.Join<string>(String.Empty, los);

9voto

J Cooper Points 7695

String.Join() est implémenté assez rapidement, et comme vous avez déjà une collection des chaînes en question, c'est probablement le meilleur choix. Par-dessus tout, elle crie "Je joins une liste de chaînes de caractères !". Toujours agréable.

5voto

Tom Ritter Points 44352

Mon vote est string.Join

Il n'est pas nécessaire de créer des évaluations lambda et des fonctions temporaires, il y a moins d'appels de fonctions et moins de poussées et de suppressions de la pile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X