C# does not allow
yield all by itself – only
yield return and
yield is a contextual keyword that is only recognized inside iterator blocks and only in conjunction with either
One example case where yield-return is preferable is if the IEnumerable represents an infinite set. Consider the list of Prime Numbers, or an infinite list of random numbers. You can never return the full IEnumerable at once, so you use yield-return to return the list incrementally.