არ მინდა ბევრი ვწერო და ვბურღო ტვინი. ორი პატარა მაგალითი და ყოველი C# - ის მცოდნესთვის გასაგები იქნება ჩემი აზრი.


ჩვეულებრივი List
List<int> GetEvens(bool x)
{
    int[] Inputs = new int[] { 4, 68, 98, 4, 65, 77, 96, 123, 4587, 6742, 5, 93, 744, 25, 89, 123, 458, 55,
                               11, 236, 89, 654, 15, 99, 66 };
    var EvenList = new List<int>();

    foreach (int i in Inputs)
    {
      if (i % 2 == 0)
        EvenList.Add(i);
    }

    return EvenList;
}
yield return
IEnumerable<int> GetEvens()
{
    int[] Inputs = new int[] { 4, 68, 98, 4, 65, 77, 96, 123, 4587, 6742, 5, 93, 744, 25, 89, 123, 458, 55,
                               11, 236, 89, 654, 15, 99, 66 };
    foreach (int i in Inputs)
    {
      if(i%2==0)
        yield return i;
    }

}
მგონი ყველაფერი ნათელია, რომ პირველ შემთხვევაში უნდა გავიჭირვოთ და შევქმნათ List - ის ახალი ინსტანცია, მეორე შემთხვევაში კი ამის საჭიროება სულ არ არსებობს.

yield არ არის .Net რაიმე კომპონენტა ეს არის წმინდად C# ენი feature რომელიც ითარგმნება, კომპილატორის მიერ, IL კოდში.



P.S. რამდენიმე მოსული მოთხოვნის გამო, უახლოეს მომავალში გამოვაქყენეთ თემას იტერატორების შესახებ სადაც, მარგებელი იტერატორის გარდა yield - ის საჭიროებას, სრულ არსსა და პატიოსან სახეს გამოვაჩენ.