Ich habe eine Sammlung von Zeichenfolgen in C #. Mein Code sieht so aus:
%Vor%Was ich tun möchte, ist die maximale Länge der Zeichenkette in dieser Sammlung zu finden und sie in Variable zu speichern. Momentan code ich das manuell, wie?
%Vor%Der obige Code erledigt die Arbeit für mich, aber ich suche nach einer eingebauten Funktion, um die Effizienz aufrechtzuerhalten, weil es tausend Zeilen in myfile gibt: (
Ein einfacherer Weg mit LINQ wäre:
%Vor%Beachten Sie, dass Sie, wenn Sie .NET 4 verwenden, nicht zuerst alle Zeilen in einem Array lesen müssen, wenn Sie sie später nicht benötigen:
%Vor% (Wenn Sie nicht mit .NET 4 arbeiten, ist es einfach, den Gegenwert von File.ReadLines
zu schreiben.)
Das wird in Bezug auf den Speicher effizienter sein, aber im Grunde müssen Sie jede Zeile von der Festplatte lesen, und Sie müssen über diese Zeilen iterieren, um sie zu finden die maximale Länge. Der Plattenzugriff ist natürlich der Flaschenhals.
Die Effizienz wird in Ihrem Fall sicherlich nicht schlechter sein, wenn nicht besser.
Aber wenn Sie prägnant sein möchten, probieren Sie lambdas mit LINQ:
%Vor%Btw, kleiner Punkt: Sie können technisch aufhören zu lesen, wenn die Menge der Daten weniger als die längste Zeile ist, die Sie gefunden haben. Sie können also einige Schritte technisch speichern, obwohl es den Code wahrscheinlich nicht wert ist.
Völlig irrelevant, aber nur weil es mir gefällt, hier ist die (elegante!) Scheme-Version:
%Vor%Tags und Links c#