Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2008/.NET Framework 3.5

Hay además otras versiones disponibles para:
Referencia del lenguaje C#
yield (Referencia de C#)

Actualización: noviembre 2007

Se utiliza en un bloque iterator para proporcionar un valor al objeto enumerador o señalar el fin de la iteración. Presenta una de las siguientes formas:

yield return <expression>;
yield break;

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#).

En el siguiente ejemplo, la instrucción yield se utiliza dentro de un bloque de iteradores, que es el método Power(int number, int power). Cuando se invoca al método Power, este devuelve un objeto enumerable que contiene las potencias de un número. Observe que el tipo de valor devuelto del método Power es IEnumerable, un tipo de interfaz de iteradores.

C#
public class List
{
    //using System.Collections;
    public static IEnumerable Power(int number, int exponent)
    {
        int counter = 0;
        int result = 1;
        while (counter++ < exponent)
        {
            result = result * number;
            yield return result;
        }
    }

    static void Main()
    {
        // Display powers of 2 up to the exponent 8:
        foreach (int i in Power(2, 8))
        {
            Console.Write("{0} ", i);
        }
    }
}
/*
Output:
2 4 8 16 32 64 128 256 
*/

Para obtener más información, vea las secciones siguientes de Especificación del lenguaje C#.

  • 19.3 Iteradores

  • 22 Iteradores

Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2010 Microsoft Corporation. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker