Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在内存中复制/设置单个字节<;字节>;_C#_Resharper_C# 7.2 - Fatal编程技术网

C# 在内存中复制/设置单个字节<;字节>;

C# 在内存中复制/设置单个字节<;字节>;,c#,resharper,c#-7.2,C#,Resharper,C# 7.2,我从C#中的System.Buffers.MemoryPool和System.Memory开始,希望减少字节数组的分配 我有一组字节和字节数组,需要复制到单个字节数组中(用于仅适用于byte[],而不适用于Span/内存的方法)。我在做这样的事情: byte aByte = 0x01; byte[] aByteArray = { 0x02, 0x03, 0x04 }; byte[] anotherByteArray = { 0x05, 0x06, 0x07 }; using (var buff

我从C#中的
System.Buffers.MemoryPool
System.Memory
开始,希望减少字节数组的分配

我有一组字节和字节数组,需要复制到单个字节数组中(用于仅适用于
byte[]
,而不适用于
Span
/
内存的方法)。我在做这样的事情:

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?
}
字节aByte=0x01;
字节[]aByteArray={0x02,0x03,0x04};
字节[]另一个字节数组={0x05,0x06,0x07};
使用(var buffer=MemoryPool.Shared.Rent(7))
{
跨度目标;
target=buffer.Memory.Slice(0,aByteArray.Length).Span;
aByteArray.CopyTo(目标);
target=buffer.Memory.Slice(aByteArray.Length,anotherByteArray.Length).Span;
aByteArray.CopyTo(目标);
//如何复制单个字节?
}

所以,我已经知道了如何将字节数组复制到缓冲区,但却不知道如何设置单个字节。我尝试了
buffer.Memory.Span[0]=aByte
,但是
Span
没有设置程序。

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


我本应该想检查一下,因为ReSharper在使用新的C#功能之前已经让我失望了很多次,比如
Span
Memory
:///p>
buffer.Memory.Span[0]=aByte适合我。有趣的是,我只查看了索引器的文档:。它说索引器可以用于获取和设置,但随后索引器的声明表明它只有一个getter。可能较新版本的.NETCore有setter,而较旧版本没有。我不知道…请检查是否以某种方式结束了IReadOnlyMemory/IReadOnlySpanGetter is ref returning,因此不需要setter,也不能为ref returning属性定义setter。另外,在.NETFramework或.NETCore中使用它也没有任何问题。如果您试图使用它时出现任何编译错误,那么您应该将其添加到问题中。@PetSerAl gah,您是对的-编译时没有错误,如Visual Studio中所示。。。ReSharper又让我知道了!