Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Sharov, Вы писали:
S>>Я так понял, что речь идет о ленивости, но каким образом мы потеряем нужный(проблемный) фрейм?
S>Очень просто.
S>Ошибка — в функции GetAS(). В стектрейсе её нет:
S>S>Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'source')
S> at X.GetAccumulatingSum(IEnumerable`1 source)+MoveNext()
S> at Program.Print(IEnumerable`1 s)
S> at Program.Main()
Ну да, особенности ленивых вычислений.
S>>Приведенный фрагмент кода лежит в основе как минимум Linq to objects, поэтому не совсем понятно, что с ним не так...
S>Нет, не лежит.
Это не то:
https://github.com/microsoft/referencesource/blob/51cf7850defa8a17d815b4700b67116e3fa283c2/System.Core/System/Linq/Enumerable.cs#L899
https://github.com/microsoft/referencesource/blob/51cf7850defa8a17d815b4700b67116e3fa283c2/System.Core/System/Linq/Enumerable.cs#L1265