сипаттау керек. Оған қол жеткізу
IEnumerator
интерфейсінің
MoveNext
және
Current әдістері арқылы орындалады.
foreach
циклінің әрбір қадамында итератор үшін «қоршам» -
қызметтік объект әзірленеді, ол объект итератордың ағымдағы жағдайын
сақтайды.
Басқаша айтқанда, итераторды құраушы код үзіліссіз түрде
орындалмайды, ол жеке итерацияларға бӛлінген және осы аралықтардың
арасында итератордың күйі сақталады.
Бағдарламада келтірілген екі ӛзгеріс
foreach
циклін қолдануға
мүмкіндік береді, алдынғы қарастырған жағдайда бұл
циклды қолданған кезде қате
кеткені туралы хабарламаны
шығаратын.
Бағдарламаның
«тұрып қалуына» себеп болатын
foreach
циклінің жұмыс ерекшелігін ескере кету керек. Егер
біздің бағдарламада тауардың бірнеше
объекттерін енгізгеннен
кейін, бірақ массив толық толмай тұрып, қоймадағы тауарларды қарап шығу
режімін
қосатын болсақ, онда бағдарлама жоқ мәндерді шығару кезінде
«тұрып қалады», сондықтан foreach цикліндегі мәндерді бақылау керек.
For циклінде мұндай кемшіліктер жоқ, өйткені ондағы
ақырғы мән ағымдағы ауқымды kol айнымалысының мәнімен
анықталады.
for (int i = 0; i < kol; i++)
{
s = s + ckl.tovar[i].Naz + " " +
ckl.tovar[i].Cena.ToString() + "\r\n";
}
Достарыңызбен бөлісу: