lunes, 25 de junio de 2007

Yield en C#

Básicamente, yield te permite poder retornar valores intermedios de una función, mediante la implementación de la Interfaz IEnumerable.
Esto quiere decir que podemos capturar cada iteración que pueda poseer un método, como por ejemplo:

using System;
using System.Collections;
public class Moledor
{
//Por que moledor?, porque toma un string y lo imprime caracter por caracter
public static IEnumerable Moledor(string palabra) {
int count = palabra.Length;
for (int i = 0; i < count; i++) {
yield return palabra[i];
}
}

static void Main()
{
foreach(char c in Moledor("Paralelepipedo")){
Console.WriteLine(c);
}
}
}

Ahora bien, otro ejemplo (que no es mío) es :

using System;
using System.Collections;
public class List
{
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);
}
}
}

Esto quiere decir: La operación 2^8 (dos elevado a 8) nos daría por resultado 256. Pero que sucede si queremos obtener los valores intermedios también (2^1 , 2^2,...,2^8)...entonces use yield :D nice!!!

5 comentarios:

Garzu dijo...

gracias,
más claro el agua.

gcorreageek dijo...

Gracias, me ayudo mucho!

gcorreageek dijo...

Gracias me ayudo mucho!

Anónimo dijo...

Muchas gracias, ha sido claro!

Anónimo dijo...
Este comentario ha sido eliminado por el autor.