Welcher der folgenden Ansätze ist besser? Ich wollte fragen, ist es besser, den Stream lokal zu kopieren, ihn zu schließen und alle Operationen auszuführen, die mit den Daten ausgeführt werden müssen? oder einfach Operationen mit offenem Stream ausführen? Angenommen, die Eingabe aus dem Stream ist riesig.Führen Sie Vorgänge aus, während der Streamreader geöffnet ist, oder kopieren Sie den Stream lokal, schließen Sie den Stream und führen Sie dann Vorgänge aus?
Erste Methode:
public static int calculateSum(string filePath)
{
int sum = 0;
var list = new List<int>();
using (StreamReader sr = new StreamReader(filePath))
{
while (!sr.EndOfStream)
{
list.Add(int.Parse(sr.ReadLine()));
}
}
foreach(int item in list)
sum += item;
return sum;
}
Zweite Methode:
public static int calculateSum(string filePath)
{
int sum = 0;
using (StreamReader sr = new StreamReader(filePath))
{
while (!sr.EndOfStream)
{
sum += int.Parse(sr.ReadLine());
}
}
return sum;
}
Warum möchten Sie zwei Schleifen ausführen, wenn eines ausreicht? – Steve
Es könnte in einer einzigen Zeile mit Linq geschrieben werden, aber wahrscheinlich sind die Leistung nicht besser als die Single-Loop-Ansatz – Steve