Пытаюсь считать с FileStream поблочно данные. Вроде как всё выглядит складно, но в результате я получаю 5 записей одного и того же массива (byte[]) в tmp.
Судя по всему, я неправильно понимаю логику работы считывания с данного потока. Подскажите, в чем проблема?
using (FileStream fs = File.OpenRead(filePath))
{
List<byte[]> tmp = new List<byte[]>();
while ((read = fs.Read(buffer, 0, buffer.Length)) > 0)
{
tmp.Add(buffer);
}
}
Массивы в C# ссылочный тип. Так что у Вас добавляется 5 ссылок на один и тот же массив, который перезаполняется внутри цикла. И после завершения цикла Вы имеете в списке 5 ссылок на один и тот же массив с последним полученным значением. Перенесите чтение и создание массива внутрь цикла:
while (true)
{
var buffer=new int[size];
read = fs.Read(buffer, 0, buffer.Length);
if (read>0)
tmp.Add(buffer);
else
break;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей