Как считать byte[] с FileStream поблочно?

197
22 апреля 2018, 20:56

Пытаюсь считать с 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);
    }
}
Answer 1

Массивы в 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;
    }
READ ALSO
Быстрое изменение скорости C# Unity

Быстрое изменение скорости C# Unity

Доброго времени суток, у меня есть код

201
Ошибка при десериализации

Ошибка при десериализации

Столкнулся с ошибкой при десериализации ответа от apivk

209
подсчет объектов на изображении c#

подсчет объектов на изображении c#

Есть бинарное изображение(Белый фон с черными пятнами)

198
Как можно реализовать на WPF флажок,который меняет цвет с одного на другой при нажатии?

Как можно реализовать на WPF флажок,который меняет цвет с одного на другой при нажатии?

Необходимо реализовать на WPF флажок,который меняет цвет с одного на другой при нажатии,как,например, checkbox? Пример того,что я хочу видеть в результате

187