- 基本、「await と yield return が混在できるようになった」でいいんだけど - どちらも似たような(しかもだいぶコンパイラーが頑張ってる複雑な)コード生成 - イテレーターかどうかは body 中に yield を含むかどうかで判定 - 非同期かどうかは async 修飾がついてるかどうかで判定 - 用途 - 「ページング」的な奴。巨大なリストのうち、一定数ずつをネットから取ってきて…みたいなやつ - Producer-Consumer - [イテレーター](https://ufcpp.net/study/csharp/sp2_iterator.html)の方と[非同期メソッド](https://ufcpp.net/study/csharp/sp5_async.html)の方、どっちに書こう? - 戻り値は `IAsyncEnumerable<T>` or `IAsyncEnumerator<T>` 固定なんだっけ? - それか、builder パターンで制御可能? - → 固定。「builder パターンは将来考えるかも」くらい - たぶん前者 https://github.com/dotnet/csharplang/blob/master/proposals/csharp-8.0/async-streams.md - EnumeratorCancellationAttribute はこっち用?それとも await foreach の方用? - パフォーマンス的な懸念の話書く? - 結局、ValueTask であれば大丈夫そう? - https://ufcpp.net/blog/2018/12/fastenumerator/ みたいな話は蒸し返す?
Activity
ufcpp commentedon May 7, 2019
ufcpp commentedon May 7, 2019
https://gist.github.com/ufcpp/ae78b9e06d77a573cd5f2fcdbefb92cd
やっと把握。
ufcpp commentedon May 22, 2019
16.2 Preview 1 で EnumeratorCancellation 2個付けたらエラーになるの確認。
ufcpp commentedon May 22, 2019
ufcpp commentedon May 2, 2022
もう… いいかな…