yield return works only for IEnumerable<T>?

.net, c#, ienumerable

Solution

`yield return` works for exactly 4 cases:

- `IEnumerable`

- `IEnumerable<T>`

- `IEnumerator`

- `IEnumerator<T>`

This is because it has to build a state machine internally; a dictionary (etc) wouldn't be possible with this. You can of course just `return` a suitable type instead.

Problem

Can I use `yield return` when the return type is an `IGrouping<TKey, TElement>` or an `IDictionary<TKey, TValue>`?

Original source

Related problems