Когда вы используете методы 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.