Powiedzmy, że masz:
List<string> los = new List<string>();
W tym szalonym funkcjonalnym świecie żyjemy w dzisiejszych czasach, który z nich byłby najlepszy do stworzenia jednego ciągu poprzez połączenie tych:
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);
lub Zwykły stary ForeBuilder Foreach
Czy jest jakiś lepszy sposób?
c#
string
performance
functional-programming
maxfridbe
źródło
źródło
Odpowiedzi:
Wybrałbym opcję A:
Moje rozumowanie jest takie, że metoda Join została napisana w tym celu. W rzeczywistości, jeśli spojrzysz na Reflector, zobaczysz, że niebezpieczny kod został użyty do jego naprawdę zoptymalizowania. Pozostałe dwa również PRACUJĄ, ale myślę, że funkcja Join została napisana w tym celu i, jak sądzę, najbardziej wydajna. Mogę się mylić ...
Zgodnie z @Nuri YILMAZ bez
.ToArray()
, ale jest to .NET 4+:źródło
Jeśli chcesz po prostu połączyć łańcuchy, użyj string.Concat () zamiast string.Join ().
źródło
Jeśli używasz .net 4.0, możesz użyć sortera:
źródło
String.Join () jest implementowany dość szybko, a ponieważ masz już kolekcję omawianych ciągów, jest to prawdopodobnie najlepszy wybór. Przede wszystkim krzyczy: „Dołączam do listy ciągów!” Zawsze miło.
źródło
źródło
Mój głos jest ciągły. Dołącz
Nie ma potrzeby tworzenia ocen lambda i funkcji tymczasowych, mniej wywołań funkcji, mniej pchania i poppingu stosu.
źródło