List<T> vs Span<T> vs ReadOnlySpan<T> em C#: quando usar cada um
List<T> é uma coleção de heap que cresce; Span<T> e ReadOnlySpan<T> são visões apenas na pilha sobre memória que você já possui. Use List<T> para tudo que você armazena, retorna de async ou faz crescer; Span<T> para uma visão mutável sem alocações em um método síncrono; ReadOnlySpan<T> para análise somente leitura sobre strings, literais u8 e fatias.