rabbitmq - C#将ReadOnlyMemory转换为byte []
发布于 2020-07-31 11:16:05
给定ReadOnlyMemory结构,我想将流转换为字符串
我有以下代码:
var body = ea.Body; //ea.Body is of Type ReadOnlyMemory<byte>
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
并且它给出以下错误。我正在将最新的C#与.NET CORE 3.1一起使用
您不能将只读的内容放入类型为的插槽中byte[]
,因为byte[]
s是可写的,并且会破坏目的。看来RabbitMQ 在2月更改了API,也许忘记了更新示例代码。
一个快速的解决方法是使用.ToArray()
:
var body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
编辑:由于已被接受,因此我将使用Dmitry和zenseb提出的更好的解决方案对其进行修改.Span
:
var body = ea.Body.Span;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);