Это потому, что массивы являются ссылочными типами.
Итак, у вас есть ссылка на массив, содержащий другие ссылки на массивы, содержащие структуры.Тот факт, что содержимое массива является структурой, не означает, что сам массив является таковым.
Вам не нужно использовать ref при передаче массивов (, если вы изменяете только содержимое, а не ссылку ), потому что, как уже говорилось, они являются ссылочными типами,Это означает, что эта функция должна работать точно так, как вы хотите, если вы просто удалите ключевое слово ref.
Теперь я считаю, что это должно помочь вам, как исправить вашу ошибку.Однако я не указал, почему вы не можете использовать ref для extension-методов, и тем временем действительно хорошее объяснение уже опубликовано, так что иди проверь это тоже :)
Изменить:
Просто то, что я хотел добавить.Вам на самом деле не нужно возвращать массив снова, потому что все, что вы делаете - это изменяете вещи внутри (в конце концов, это всего лишь ссылка, поэтому эти изменения проходят без необходимости возвращать массив снова).
Вы хотели бы вернуть его, если либо:
a.Измените ссылку в текущей области и не используйте ключевое слово ref
b.Вы хотите объединить вызовы вместе, даже если вы используете ссылочный тип для создания небольшого количества синтаксического сахара (синтаксис типа app.UseX().UseY().UseZ()
).