Именно поэтому «Доступ к измененному закрытию» - это всего лишь предупреждение, а не ошибка. В принципе, пока это замыкание (любая ссылка на него) не может избежать одной итерации тела цикла, у вас все в порядке.
И поскольку, как вы упомянули, .ToList()
оценивает IEnumerable, удерживающий замыкание, вы в порядке, и это предупреждение действительно безвредно, и вы можете смело подавлять его комментарием.
Для того чтобы ReSharper знал, когда это предупреждение серьезное, он должен не только выполнить анализ аварийного сброса на закрытии, он также должен знать, как Find<T>
и .ToList()
ведут себя в отношении удержания закрытия. Это, вероятно, не произойдет в ближайшее время.