Sobes.tech
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.