La expresión se evalúa y se devuelve como valor al objeto enumerador; expression se debe poder convertir implícitamente al tipo yield del iterador.
La instrucción yield sólo puede aparecer dentro de un bloque iterator que podría utilizarse como cuerpo de un método, operador o descriptor de acceso. El cuerpo de dicho método, operador o descriptor de acceso se controla mediante las siguientes restricciones:
No se permiten bloques unsafe.
Los parámetros del método, operador o descriptor de acceso no pueden ser ref ni out.
Una instrucción yield no puede aparecer en un método anónimo. Para obtener más información, vea Métodos anónimos (Guía de programación de C#).
Cuando se utiliza con expression, una instrucción yield return no puede aparecer en un bloque catch ni en un bloque try que tengan una o más cláusulas catch. Para obtener más información, vea Instrucciones para el control de excepciones (Referencia de C#).