The yield keyword is used in an iterator block to provide a value to the enumerator object or to signal the end of the iteration. When used the expression is evaluated and returned as a value to the enumerator object. Note the expression has to be implicitly convertible to yield type of the iterator.
It takes one of the following forms:
yield return <expression>;