Карточка Middle GC, IDisposable и производительность обновлено

Span<T> и Memory<T>

Вопрос

Чем Span<T> отличается от Memory<T>?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

Span<T: ref struct, окно на непрерывную память (массив, строка, стек, неуправляемая). Очень быстрый, но только на стеке: нельзя в поле класса, в лямбду, через await.

Ответ

Span<T>: ref struct, окно на непрерывную память (массив, строка, стек, неуправляемая). Очень быстрый, но только на стеке: нельзя в поле класса, в лямбду, через await. Memory<T>: обычная структура, можно хранить и передавать в async-методы, а .Span получать по месту использования.

Разбор

Для строк есть ReadOnlySpan<char> и ReadOnlyMemory<char>.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.