Смещение позиции в потоке в C#
Свойство Position указывает, откуда следующий Read или Write возьмёт данные. Seek смещает эту точку относительно Begin, Current или End, если поток поддерживает CanSeek (MemoryStream и FileStream - да, сетевые потоки часто нет).
Так возвращаются к уже записанному байту и читают его, не копируя весь буфер.
Запишем два байта и прочитаем второй, сдвинув позицию на индекс 1. Чтение вернёт 2. Вызов Seek(0, Begin) вернул бы курсор к первому байту со значением 1:
using System.IO;
using MemoryStream stream = new();
stream.WriteByte(1);
stream.WriteByte(2);
stream.Seek(1, SeekOrigin.Begin);
Console.WriteLine(stream.ReadByte()); // выведет 2
Запишите в поток в памяти байты 7, 8 и 9, перейдите к третьему байту и выведите его значение.