是否可以从struct
创建Memory<byte>
而不复制到数组?还是更好,创建共享相同托管内存的struct
和Memory<byte>
?
Reading a C/C++ data structure in C# from a byte array非常接近,但不太适用。 Memory<T>
有一个Pin
方法,但它返回的是MemoryHandle
而不是GCHandle
。
XY:我正在从套接字读取和写入Memory<byte>
,在从切片获得的跨度上使用BinaryPrimitives
来获取和设置各个字段。将Memory
表示为struct
会更好。
答案 0 :(得分:5)
.Net Core / .Net Standard 2.1支持MemoryMarshal.Cast<TFrom, TTo>
对从Span<TFrom>
到Span<TTo>
的转换进行重新解释。您应该可以使用Memory<T>.Span
属性获取Span
,然后将其转换为struct
。