Индекс и диапазон не ведут себя как объект Span <T>? - PullRequest
0 голосов
/ 31 октября 2019

Когда вы используете методы BinaryPrimitive в сочетании с новой функцией Range / Index в C # 8, я обнаружил, что индекс / ранжированный фрагмент массива все еще может использоваться в BinaryPrimitives, но не будет распространять это изменение в исходном массиве. .

Таким образом, основной вопрос заключается в том, что если операции индекса / диапазона действительно создают что-то вроде отказоустойчивой копии нарезанной части, то каковы же преимущества использования их помимо синтаксического сахара? И если нет никаких других преимуществ, кроме этого, почему эти две операции не ведут себя как Span<T>?

var data= new byte[10];
BinaryPrimitives.WriteInt32LittleEndian(data[0..4], 4);

и

var data= new byte[10];
BinaryPrimitives.WriteInt32LittleEndian(new Span<byte>(data,0,4), 4);

Я действительно ожидал, что первый фрагмент кода будетРаспространить изменения в исходный массив, так как я ожидал, что это будет срез, основанный на исходном массиве, точно так же, как Span.

...