繁体   English   中英

复制/设置存储器中的单个字节<byte>

[英]Copy/set a single byte in a Memory<byte>

我从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没有设置器。

阅读@PetSerAl的注释后,我检查了一下,实际上没有编译时错误-在Visual Studio中仅显示警告。 ReSharper让我在这里了解大概是一个错误。

我应该考虑一下,因为ReSharper在使用新的C#功能(例如Span<T>Memory<T>之前让我失望了很多:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM