Yield return: qaytish elementini belgilaydi yield break
IEnumerator-ning umumiy versiyasi
Download 63.55 Kb.
|
tsfcsOQYNmo1EkP9FeO7k5euCfrh5g2v
- Bu sahifa navigatsiya:
- IEnumerator
IEnumerator-ning umumiy versiyasi
Yuqoridagi misollarda interfeyslarning umumlashtirilmagan versiyalari ishlatilgan, ammo biz ularning umumlashtirilgan juftliklaridan ham foydalanishimiz mumkin: using System.Collections; class WeekEnumerator : IEnumerator { string[] days; int position = -1; public WeekEnumerator(string[] days) => this.days = days; public string Current { get { if (position == -1 || position >= days.Length) throw new ArgumentException(); return days[position]; } } object IEnumerator.Current => throw new NotImplementedException(); public bool MoveNext() { if (position < days.Length - 1) { position++; return true; } else return false; } public void Reset() => position = -1; public void Dispose() { } } class Week { string[] days = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; public IEnumerator } Bunday holda, biz IEnumerator Week week = new Week(); foreach (string day in week) { Console.WriteLine(day); } Итератор (Iterator) Naqsh iterator (Iterator) kompozit ob'ektning barcha elementlariga uning ichki tuzilishini oshkor qilmasdan ketma-ket kirish uchun mavhum interfeysni taqdim etadi. Ehtimol, C# tili bilan ishlaydigan barcha dasturchilar massiv yoki to'plamdagi ob'ektlarni takrorlaydigan foreach tsikli bilan shug'ullanishlari kerak edi. Shu bilan birga, to'plamlarning ko'plab o'rnatilgan sinflari mavjud va ularning har biri tuzilishi va xatti-harakatlarida farq qiladi. Foreach-dan foydalangan holda to'plamlarni sanab o'tishga imkon beradigan asosiy narsa bu to'plamlar sinflari tomonidan iterator naqshini yoki sodda qilib aytganda, IEnumerable / IEnumerator interfeyslarini qo'llashdir. IEnumerator interfeysi konteynerdagi ichki ob'ektlarni qidirish funktsiyasini belgilaydi: public interface IEnumerator { bool MoveNext(); // перемещение на одну позицию вперед в контейнере элементов object Current {get;} // текущий элемент в контейнере void Reset(); // перемещение в начало контейнера } A IEnumerable interfeysi ma'lum bir ob'ekt turi uchun iteratorni olish uchun IEnumerator-dan foydalanadi: public interface IEnumerable { IEnumerator GetEnumerator(); } Ushbu interfeyslardan foydalanib, biz bitta naqshga - foreach loopidan foydalanib - har qanday kompozit ob'ektlarni qisqartirishimiz mumkin. Download 63.55 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling