C #: wie man die Länge der Zeichenkette in der Zeichenkette [] erhält

7

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: (

    
Jame 08.04.2011, 05:39
quelle

2 Antworten

17

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.

    
Jon Skeet 08.04.2011, 05:41
quelle
3

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%     
Mehrdad 08.04.2011 05:41
quelle

Tags und Links