Console.Write(ch + " "); Console.WriteLine(); } } Ushbu dastur bajarilganda quyidagi natijalar olinadi. АВСD Ko'rib turganingizdek, mc.chrs massivning ro`yxati keltirilgan. Keling, ushbu dasturni batafsil ko'rib chiqaylik. Birinchidan, MyClass sinfida IEnumerator amalga oshiriladigan interfeys sifatida ko'rsatilmagan. Iterator yaratilganda, kompilyator ushbu interfeysni avtomatik ravishda amalga oshiradi. Ikkinchidan, qulaylik uchun quyida keltirilgan GetEnumerator()metodiga alohida e'tibor beraylik. // Bu iterator chrs massivi belgilarni qaytaradi. public IEnumerator GetEnumerator() { foreach(char ch in chrs) yield return ch; } Bu sinf MyClassob'ektlari uchun iterator. Ko'rib turganingizdek, IEnumerable interfeysida aniqlangan GetEnumerator()metodini aniq amalga oshiradi. Endi bu metodning tanasiga to'g'ridan-to'g'ri ko`rib chiqamiz. Unda chrs massivi elementlari bo'lgan foreach operatoridan iborat. Bu "yield return" operatori yordamida amalga oshiriladi. Bu operator kolleksiyaning keyingi ob'ektni qaytadi, bu holda u chrs massivining yana bir belgisi bo'ladi. Ushbu vosita yordamida MyClasstipidagi mcob'ektiga murojaat qilish Main()metodi doirasida foreachsiklida tashkil etiladi. yield nomi C# tilida kontekstli kalit so'zsifatida xizmat qiladi. Bu shuni anglatadiki, u faqat iterator blokida maxsus maqsadga ega. Undan blokdan tashqarida har qanday boshqa identifikatorga o'xshash tarzda foydalanish mumkin. Shuni alohida ta'kidlash kerakki, iterator boshqa turdagi qator yoki to'plamga tayanmasligi kerak. U faqat elementlarning to'plamidan keyingi elementni qaytarishi kerak. Bu shuni anglatadiki, elementlar tegishli algoritm bilan dinamik ravishda qurilishi mumkin. Misol tariqasida, quyida yuqoridagi dasturning versiyasi keltirilgan bo'lib, unda ingliz alifbosidagi barcha harflar katta registrda yozilgan. Qator o'rniga harflar for siklida hosil qilinadi.