rabbitMQ中将ReadOnlyMemory转换为byte []

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);
posted @ 2022-09-19 21:46  .net&new  阅读(63)  评论(0编辑  收藏  举报