我有以下结构体:
[StructLayout(LayoutKind.Sequential)]
struct Message
{
int Header;
int Data;
}
我希望将其通过无需分配内存的方式(使用SendAsync(ReadOnlyMemory<byte>)
调用)发送到网络中。
我该如何从给定的结构体中获取Memory<byte>
?
最终我得到了Span<byte>
,但却陷入了困境。
var message = new Message {
Header = 1, Data = 3
};
var bytes = MemoryMarshal.AsBytes(
MemoryMarshal.CreateReadOnlySpan(ref message, 1)
);
有没有办法在不进行任何分配的情况下,直接将结构体放入流中?
我使用的是 netcoreapp2.1
。
message
已经在 AsyncStateMachine 中被捕获了 - 它不是ref struct
。 - nothrow