
July 29, 2010 00:37 by
Mikie
არ მინდა ბევრი ვწერო და ვბურღო ტვინი. ორი პატარა მაგალითი და ყოველი 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 - ის საჭიროებას, სრულ არსსა და პატიოსან სახეს გამოვაჩენ.
a870339f-bf34-4574-b381-2beeb9b0a059|3|5.0