Operador yield no C#
Hoje encontrei um operador no C# que desconhecia, o yield . Ele serve para manter estado quando se percorre uma coleção de objetos, e está intimente ligado à implementação do pattern Iterator dentro do C#. Na prática, ele pode ser aplicado quando temos métodos que retornam um IEnumerable . No exemplo abaixo, eu tenho um método que percorre as datas de finais de semana (Sábado e Domingo) dado um ano. Veja que este método é chamado dentro de um foreach , e cada iteração ele exibe uma data na tela. Não estou preocupado, dentro do foreach , em saber qual foi a última data que foi exibida, isso é controlado internamente durante a iteração, que vai mantendo o loop "ativo" através do operador yield . Feliz Natal e até a próxima! using System; using System.Collections.Generic; namespace TesteYield { class Program { static void Main(string[] args) { Console.WriteLine("Finais de semana de 2009:"); foreach (DateTime data in