Disons que vous avez un:
List<string> los = new List<string>();
Dans ce monde fonctionnel fou dans lequel nous vivons, l'un de ceux-ci serait le mieux pour créer une chaîne 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 y a-t-il un meilleur moyen?
J'irais avec l'option A:
String.Join(String.Empty, los.ToArray());
Mon raisonnement vient du fait que la méthode Join a été écrite à cette fin. En fait, si vous regardez Reflector, vous verrez que du code non sécurisé a été utilisé pour l’optimiser réellement. Les deux autres fonctionnent également, mais je pense que la fonction Join a été écrite à cet effet, et je suppose, la plus efficace. Je pourrais toutefois avoir tord...
Selon @Nuri YILMAZ sans .ToArray()
, mais il s'agit de .NET 4+:
String.Join(String.Empty, los);
string.Concat(los.ToArray());
Si vous souhaitez simplement concaténer les chaînes, utilisez string.Concat () au lieu de string.Join ().
Si vous utilisez .net 4.0, vous pouvez utiliser une méthode de tri:
String.Join<string>(String.Empty, los);
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. Surtout, il crie "Je me joins à une liste de chaînes!" Toujours sympa.
los.Aggregate((current, next) => current + "," + next);
Mon vote est string.Join
Pas besoin de créer d’évaluations lambda ni de fonctions temporaires, moins d’appels de fonctions, moins de poussées et de sauts de pile.