次のアプローチのどちらが良いでしょうか?ストリームをローカルにコピーしてクローズし、データを使用して行う必要がある操作を実行する方が良いでしょうか?ストリームを開いた状態で操作を実行するだけですか?ストリームからの入力が巨大であると仮定してください。streamreaderが開いているかストリームをローカルにコピー中に操作を実行し、ストリームを閉じて操作を実行しますか?
最初の方法:
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;
}
第二の方法:ファイルが頻繁に変更され
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;
}
1つで十分なときに2つのループを実行するのはなぜですか? – Steve
Linqを使って1行で記述することもできますが、パフォーマンスは単ループアプローチよりも良くないでしょう – Steve