Disons que vous avez:
List<string> los = new List<string>();
Dans ce monde fonctionnel fou, nous vivons en ces jours où l'un d'eux serait le meilleur pour créer une chaîne en concaténant ceux-ci:
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 vieux StringBuilder foreach
OU existe-t-il une meilleure façon?
c#
string
performance
functional-programming
maxfridbe
la source
la source
Réponses:
J'irais avec l'option A:
Mon raisonnement est que la méthode Join a été écrite à cet effet. En fait, si vous regardez Reflector, vous verrez que du code dangereux a été utilisé pour vraiment l'optimiser. Les deux autres fonctionnent également, mais je pense que la fonction Join a été écrite à cet effet, et je suppose que c'est la plus efficace. Je pourrais toutefois avoir tord...
Selon @Nuri YILMAZ sans
.ToArray()
, mais c'est .NET 4+:la source
Si vous souhaitez simplement concaténer les chaînes, utilisez string.Concat () au lieu de string.Join ().
la source
Si vous utilisez .net 4.0, vous pouvez utiliser une méthode de tri:
la source
String.Join () est implémenté assez rapidement, et comme vous avez déjà une collection des chaînes en question, est probablement le meilleur choix. Surtout, il crie "Je rejoins une liste de chaînes!" Toujours sympa.
la source
la source
Mon vote est une chaîne.
Pas besoin de créer des évaluations lambda et des fonctions temporaires, moins d'appels de fonction, moins de push et popping de pile.
la source