У меня есть List<T>
содержащий некоторые данные. Я хотел бы передать его функции, которая принимает ReadOnlySpan<T>
.
List<T> items = GetListOfItems();
// ...
void Consume<T>(ReadOnlySpan<T> buffer)
// ...
Consume(items??);
В этом конкретном случае T является byte
но это не имеет большого значения.
Я знаю, что я могу использовать .ToArray()
в списке и построить span, например
Consume(new ReadOnlySpan<T>(items.ToArray()));
Однако это создает (по-видимому) ненужную копию элементов. Есть ли способ получить Span непосредственно из списка? List<T>
реализуется в терминах T[]
за кулисами, поэтому теоретически это возможно, но не настолько, насколько я вижу на практике?