我从C#中的System.Buffers.MemoryPool<T>
和System.Memory<T>
开始,希望减少字节数组的分配。
我有一堆字节和字节数组,需要将它们复制到一个字节数组中(用于仅与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
没有设置器。
答案 0 :(得分:0)
在阅读@PetSerAl的注释后,我检查了一下,实际上没有编译时错误-在Visual Studio中仅显示警告。 ReSharper让我在这里了解大概是一个错误。
我本来应该考虑一下这一点,因为ReSharper在让我使用很多新的C#功能(如Span<T>
和Memory<T>
之前就让我失望了很多:/