Скопируйте readonlyspan в одном проходеC#

Место общения программистов C#
Ответить
Anonymous
 Скопируйте readonlyspan в одном проходе

Сообщение Anonymous »

Все руководящие принципы, по -видимому, сводятся к созданию нового пролета , инициализированного массивом данного типа. Это включает в себя дополнительный проход и дополнительное ноль массива. В настоящее время у меня есть два подхода (

Код: Выделить всё

str< /code> - это строка, len < /code> - длина строки): < /p>

Подход 1 включает в себя дополнительный проход: < /p>

let roSpan = str.AsSpan()
let writeSpan = Span(Array.zeroCreate len)
roSpan.CopyTo writeSpan
< /code>

Подход 2 имеет слишком мало прохода (это превращает Readonlyspan в промежуток чтения /записи, опасные вещи): < /p>

let roSpan = str.AsSpan()
let writeSpan = MemoryMarshal.CreateSpan(&MemoryMarshal.GetReference roSpan, len)
< /code>

Я искал решения как C#, так и F#, но не смог найти хороший ответ. Один подход может быть с MemoryPool 
, но это кажется чрезмерным для простого «скопировать это во что-то чтение-/записываемое».>

Подробнее здесь: https://stackoverflow.com/questions/622 ... n-one-pass
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»