Yield return: qaytish elementini belgilaydi yield break


Download 63.55 Kb.
bet3/7
Sana24.12.2022
Hajmi63.55 Kb.
#1062569
1   2   3   4   5   6   7
Bog'liq
tsfcsOQYNmo1EkP9FeO7k5euCfrh5g2v

Iteratorni qo'llash:
Ko'rib turganimizdek, aksariyat to'plamlar uchun asosiy narsa IEnumerable va IEnumerator interfeyslarini amalga oshirishdir. Bunday amalga oshirish tufayli biz foreach loopidagi ob'ektlarni takrorlashimiz mumkin:
foreach(var item in перечислимый_объект)
{
}
Yineleyebilir to'plam IEnumerable interfeysini amalga oshirishi kerak.
IEnumerable interfeysi boshqa numerator interfeysiga havolani qaytaradigan usulga ega:
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
Va IEnumerator interfeysi konteynerdagi ichki ob'ektlarni qidirish funktsiyasini belgilaydi:
public interface IEnumerator
{
bool MoveNext(); // перемещение на одну позицию вперед в контейнере элементов
object Current {get;} // текущий элемент в контейнере
void Reset(); // перемещение в начало контейнера
}
MoveNext() usuli ko'rsatgichni joriy elementga ketma-ketlikdagi keyingi holatga o'tkazadi. Agar ketma-ketlik hali tugamagan bo'lsa, u holda true qaytadi. Agar ketma-ketlik tugagan bo'lsa, u holda false qaytariladi.
Joriy xususiyat ob'ektni ko'rsatgich tomonidan ko'rsatilgan ketma-ketlikda qaytaradi.
Reset() usuli pozitsiya ko'rsatgichini boshlang'ich holatiga qaytaradi.
Ko'rsatgichning harakati qanday amalga oshiriladi va elementlarni olish interfeysni amalga oshirishga bog'liq. Turli xil dasturlarda mantiqni turli yo'llar bilan qurish mumkin.
Masalan, foreach loopidan foydalanmasdan, IEnumerator interfeysi yordamida massivni ko'rib chiqamiz:
using System.Collections;
string[] people = {"Tom", "Sam", "Bob"};
IEnumerator peopleEnumerator = people.GetEnumerator(); // получаем IEnumerator
while (peopleEnumerator.MoveNext()) // пока не будет возвращено false
{
string item = (string)peopleEnumerator.Current; // получаем элемент на текущей позиции
Console.WriteLine(item);
}
peopleEnumerator.Reset(); // сбрасываем указатель в начало массива

Download 63.55 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling