без аллокаций?
Я попробовал MemoryMarshal.TryGetArray(content, out ArraySegment<byte> segment)
Но не знаю, есть ли у него подводные камни?
Это невозможно. У тебя мемори может указать на часть массива
И что, memoryMarshal юзать?
То есть даже если ты найдёшь массив, ты потеряешь часть информации
На MS так и советуют при работе с grpc и binary payload: https://learn.microsoft.com/en-us/aspnet/core/grpc/performance?view=aspnetcore-8.0#read-binary-payloads
А где написано что потеряю данные? В доке memoryMarshal не нашел
Если ты создашь мемори стрим и укажешь границы, то всё будет ок. Но если бы твой апи принимал просто массив - то всё
А. Не. Я slice делаю когда беру у MemoryPool данные
но если тебе надо обернуть мемори в стрим бери пайпы
var mem = r.AsMemory(); PipeReader.Create(new ReadOnlySequence<byte>(mem)).AsStream();
Обсуждают сегодня