Нужен мне был отрезок со смещением Span<char> из массива, который я заполнял данными отдельно, и потом уже работал с целым массивом. Спан я получал так:
private char[] buffer;
public Span<char> AsSpan()
{
return new Span<char>(buffer, this.offset, this.buffer.Length - this.offset);
}
и всё работало — массив заполнялся данными извне.
Потом я решил эту строчку поменять:
private char[] buffer;
public Span<char> AsSpan()
{
return this.buffer[this.offset..];
}
и всё перестало работать — массив остаётся пустым!
Что же делает второй вариант, неужели создаёт копию массива вместо возвращения отрезка из моего оригинального массива?
Кстати, в классе MemoryExtensions
есть такой же метод, но он похитрее моего — чем он лучше?