1-Mavzu 1-Mavzu Reja: Klass a’zolariga ruxsatni boshqarish


Keling, iteratorning oddiy misoliga murojaat qilaylik. Quyidagi dastur oldingi dasturning o'zgartirilgan versiyasidir, unda


Download 111.72 Kb.
bet93/96
Sana29.03.2023
Hajmi111.72 Kb.
#1307438
1   ...   88   89   90   91   92   93   94   95   96
Bog'liq
1-Mavzu 1-Mavzu Reja Klass a’zolariga ruxsatni boshqarish

Keling, iteratorning oddiy misoliga murojaat qilaylik. Quyidagi dastur oldingi dasturning o'zgartirilgan versiyasidir, unda IEnumerator va IEnumerable interfeyslarini amalga oshirish o'rniga iterator qo'llaniladi.
// Iteratordan foydalanishning oddiy namunasi.
using System;
using System.Collections;
class MyClass {
char[] chrs = { 'A', 'B\ 'C, 'D' };
// Bu iterator chrs belgili massiv elementlarini qaytaradi.
public IEnumerator GetEnumerator() {
foreach(char ch in chrs)
yield return ch;
}
}
class ItrDemo {
static void Main() {
MyClass mc = new MyClass ();
foreach(char ch in mc)
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 MyClass ob'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 MyClass tipidagi mc ob'ektiga murojaat qilish Main() metodi doirasida foreach siklida tashkil etiladi.

Download 111.72 Kb.

Do'stlaringiz bilan baham:
1   ...   88   89   90   91   92   93   94   95   96




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