Avatar ·

¿Para qué sirve la palabra clave yield en C#? ¿Cómo usar yield return y yield break?

¡Hola a todos! Acabo de empezar a aprender C# y me encontré con la palabra clave `yield`. Honestamente, no entiendo del todo para qué sirve y cómo usarla correctamente. He visto ejemplos donde `yield return` se usa dentro de métodos que devuelven `IEnumerable` o `IEnumerable`. Pero tengo dos preguntas: 1. ¿Cuál es la diferencia entre devolver una colección normal (por ejemplo, `List` con `return`) y usar `yield return`? 2. ¿Cuándo es realmente necesario en proyectos reales, y no solo en ejemplos de aprendizaje? Aquí hay un ejemplo que encontré en MSDN, pero me parece extraño: ```csharp static IEnumerable GetNumbers() { for (int i = 0; i < 10; i++) { yield return i; } } ``` ¿Por qué no se puede simplemente hacer así? ```csharp static List GetNumbers() { List list = new List(); for (int i = 0; i < 10; i++) { list.Add(i); } return list; } ``` Después de todo, el resultado parece ser el mismo: obtenemos