Копировать / установить один байт в памяти<byte>

Я начинаю с System.Buffers.MemoryPool<T> а также System.Memory<T> в C#, чтобы уменьшить выделение для байтовых массивов.

У меня есть куча байтов и байтовых массивов, которые мне нужно скопировать в один байтовый массив (для использования в методе, который работает только с byte[]не Span/Memory). Я делаю что-то вроде этого:

byte aByte = 0x01;
byte[] aByteArray = { 0x02, 0x03, 0x04 };
byte[] anotherByteArray = { 0x05, 0x06, 0x07 };

using (var buffer = MemoryPool<byte>.Shared.Rent(7))
{
    Span<byte> target;

    target = buffer.Memory.Slice(0, aByteArray.Length).Span;
    aByteArray.CopyTo(target);

    target = buffer.Memory.Slice(aByteArray.Length, anotherByteArray.Length).Span;
    aByteArray.CopyTo(target);

    // How to copy a single byte?
}

Итак, я выяснил, как скопировать байтовые массивы в буфер, но не могу понять, как установить один байт. Я старался buffer.Memory.Span[0] = aByte, но Span не имеет сеттера

1 ответ

Решение

После прочтения комментария @PetSerAl я проверил, и на самом деле не было ошибки во время компиляции - только предупреждение, отображаемое в Visual Studio. ReSharper позволил мне понять, что, по-видимому, является ошибкой.

Я должен был подумать, чтобы проверить это, так как ReSharper уже много раз подводил меня с новой функциональностью C#, такой как Span<T> а также Memory<T>:/

Другие вопросы по тегам