Digamos que tienes un:
List<string> los = new List<string>();
En este loco mundo funcional, vivimos en estos días cuál de estos sería el mejor para crear una cadena concatenando estos:
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);
o llano viejo StringBuilder
¿O hay un mejor camino?
c#
string
performance
functional-programming
maxfridbe
fuente
fuente
Respuestas:
Yo iría con la opción A:
Mi razonamiento es porque el método Join fue escrito para ese propósito. De hecho, si observa Reflector, verá que se utilizó un código inseguro para optimizarlo realmente. Los otros dos también FUNCIONAN, pero creo que la función Unir se escribió para este propósito, y supongo que es la más eficiente. Aunque podría estar equivocado ...
Según @Nuri YILMAZ sin
.ToArray()
, pero esto es .NET 4+:fuente
Si solo desea concatenar las cadenas, use string.Concat () en lugar de string.Join ().
fuente
Si usa .net 4.0 puede usar un clasificador:
fuente
String.Join () se implementa bastante rápido, y como ya tiene una colección de las cadenas en cuestión, es probablemente la mejor opción. Sobre todo, grita "¡Me estoy uniendo a una lista de cadenas!" Siempre guay.
fuente
fuente
Mi voto es una cuerda.
No es necesario crear evaluaciones lambda y funciones temporales, menos llamadas a funciones, menos empuje de pila y popping.
fuente