static void Main(string[] args) { var ugyfel = new Ugyfel(); ugyfel.Name = "Gipsz Jakab"; //ugyfel.Address = "Utca, hsz"; var vegeredmeny = true; foreach (bool eredmeny in Validalas(ugyfel)) { if (!eredmeny) { vegeredmeny = false; break; } } Console.WriteLine("Validálás sikeres: {0}", vegeredmeny); var lista = new List <string>(new string[] { "Egy", "Ketto", "Harom" }); var gyujtemeny = new BejarhatoGyujtemeny(lista); foreach (var item in gyujtemeny) { Console.WriteLine("+++{0}", item); } ///A foreach ciklus működése a következő /// ///Bejaro bejaro = BejarhatoGyujtemeny.GetEnumerator() ///do ///{ /// var leszkovetkezo = Bejaro.MoveNext(); /// var aktualis = Bejaro.Current(); /// (tennivaló elvégzése az aktuális elemen) ///} while (leszkovetkezo) /// ///Figyelni kell arra, hogy a bejárás indulása után az eredeti ///osztály módosulhat, és ilyen esetekben ezzel ///foglalkozni kell. Például a Lista osztály bejáró implementációja ///ezt nem engedi: //foreach (var item in lista) //{ // lista.Remove(item); //} ///Ha bejárás közben akarom módosítani, akkor ///kivételt dob: ///An unhandled exception of type 'System.InvalidOperationException' occurred in mscorlib.dll ///Additional information: Collection was modified; enumeration operation may not execute. Console.ReadLine(); }
/// <summary> /// Ez a függvény demonstrálja, hogy egy ciklusból is meg tudunk hívni összetett /// műveletet. Az IEnumerable visszatérési típussal és a /// yield return visszatéréssel a függvényünk /// részekben fut, egyszerre mindig csak a következő /// yield return-ig, majd a következő végrehajtás /// innen, ebből az állapotból folytatja, és így tovább, /// amíg a függvény véget nem ér /// </summary> /// <param name="ugyfel"></param> /// <returns></returns> private static IEnumerable <bool> Validalas(Ugyfel ugyfel) { yield return(!string.IsNullOrWhiteSpace(ugyfel.Name)); yield return(!string.IsNullOrWhiteSpace(ugyfel.Address)); ///Es itt folytathatnánk a sort bármeddig /// //A foreach ciklus egészen addig hívja újra, amíg yield return-nel térünk vissza //ha nem, akkor nem hív többé }