Отредактировано для повторного открытия, поскольку «тот же» вопрос не соответствует этой проблеме. Я понимаю, что использование итератора внутри лямбды вызывает проблему, поскольку лямбда вызывается по значению этого итератора позже. Но я не использую лямбду, и там нет объяснения, почему Blazor пытается получить доступ к @subInsp.Elements[it] вне цикла.
Я работаю над проектом MAUI Blazor, и у меня есть следующий цикл в коде:
@for (int it = 0; it < subInsp.Elements.Count; it++) { var bgColor = (это %2 == 0 ? Color.Default: Color.Secondary); @subInsp.Elements[it].DisplayName @subInsp.Elements[it].Value } Когда я запускаю приложение, я получаю исключение ArgumentOutOfRangeException, а когда я прослеживаю трассировку стека в вызове BuildRenderTree, я вижу, что subInsp.Elements.Count равен 22, но он также равен 22 (скриншот отладки ниже). Как это возможно?

Я предполагаю, что это какая-то странная особенность процесса рендеринга Razor, но я не могу понять, чего мне не хватает.