Карточка 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 ошибок.