3 ms·
Yield return in C#
- Kennethtruyers 10y agoAny questions are welcome!
- djengineerllc 10y agoI like this article. It was very well laid out. I've already added a new card to my Trello board for taking a look at implementing "yield" in our software application.
- Kennethtruyers 10y agoThanks! Great to hear it's of use.
- krylon 10y agoHonest question: Is this just coroutines or am I missing something? (Either way, I did not know C# had this feature, it looks very nice! Also, the article is very well written, thanks a lot!)
- Kennethtruyers 10y agoYes, yield return (and iterators in general) are the coroutine implementation in c#. Here's some more info (although outdated): https://en.wikipedia.org/wiki/Coroutine#Implementations_for_C.23 https://en.wikipedia.org/wiki/Coroutine#Implementations_for_... Thanks, glad you enjoyed it!
- JeanSebTr 10y agoThere's no coroutines involved. It use a simple state machine. The async keyword is implemented with the same principle.
- Bertengele 10y agoGood article! A complex thing explained very cleanly.
- shaftway 10y agoI liked the article. Maybe a bit about how the LinQ methods are (or could be) implemented under the hood to show how easy this can actually be? I've always like the good old fibonacci sequence for this too, because it shows off some simple logic that we all know, but it touches on some non-intuitive aspects (like yields being anywhere, and infinitely long IEnumerables). public IEnumerable<int> Fib() { yield return 1; yield return 1; int a = 1, b = 1; while (true) { b = a + b; a = b - a; yield return b; } } Then the 500th fibonachi number is: Fib().Skip(499).Next()