Копировать / установить один байт в памяти<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>
:/