Я начинаю с 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
не имеет установщика.