Junior — Middle
Iterator dizayn naqshini nima ekanligini va uni qanday qo'llash mumkinligini tushuntirib bera olasizmi?
sobes.tech AI
AIdan javob
Dizayn naqshili Iteratsiya (Iterator) kolleksiyaning elementlarini ketma-ket o'tish uchun mo'ljallangan, uning ichki tuzilmasini ochiq qilmasdan.
Asosiy g'oya:
- Iterator kolleksiyaning elementlariga bitta-bitta kirish uchun interfeys taqdim etadi.
- Mijoz kodi kolleksiyaning ichki tuzilishini bilmasdan elementlarni o'tib ketishi mumkin.
C# da iterator IEnumerator va IEnumerable interfeyslar yordamida amalga oshiriladi. Odatda, yield so'zidan foydalaniladi, bu iteratorlarni yaratishni soddalashtiradi.
C# da iterator misoli:
using System;
using System.Collections;
using System.Collections.Generic;
class MyCollection : IEnumerable<int>
{
private int[] data = {1, 2, 3, 4, 5};
public IEnumerator<int> GetEnumerator()
{
foreach (var item in data)
{
yield return item; // elementlarni bitta-bitta qaytaradi
}
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
class Program
{
static void Main()
{
var collection = new MyCollection();
foreach (var item in collection)
{
Console.WriteLine(item);
}
}
}
Bu yerda, MyCollection IEnumerable<int> ni amalga oshiradi, bu esa foreach yordamida elementlarni o'tib ketishga imkon beradi. Iterator ma'lumotlarni saqlash tafsilotlarini yashiradi va ularni o'tib ketish uchun oddiy usul taqdim etadi.