Sobes.tech
Junior — Middle

Мо метавонед шарҳи кунед, ки паттерни тарҳрезии итератор чӣ гуна аст ва чӣ гуна истифода мешавад?

sobes.tech AI

Ҷавоб аз AI

Үлгілердің жобалау Итератор (Iterator) — жиналған элементтерді бірінен соң бірін өту үшін арналған, оның ішкі құрылымын ашпай.

Негізгі идея:

  • Итератор коллекцияның элементтеріне бір-бірден қол жеткізу үшін интерфейс ұсынады.
  • Клиенттік кодқа коллекцияның ішкі құрылымын білмей, элементтерді өтуге мүмкіндік береді.

C# тілінде итератор IEnumerator және IEnumerable интерфейстері арқылы жүзеге асырылады. Әдетте, yield кілт сөзі пайдаланылады, ол итераторларды жасау процесін жеңілдетеді.

C# тілінде итератордың мысалы:

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; // элементтерді бір-бірден қайтарады
        }
    }

    IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}

class Program
{
    static void Main()
    {
        var collection = new MyCollection();
        foreach (var item in collection)
        {
            Console.WriteLine(item);
        }
    }
}

Мұнда, MyCollection IEnumerable<int>-ті жүзеге асырады, бұл foreach қолдануға мүмкіндік береді. Итератор деректердің сақтау бөлшектерін жасырады және оларды өту үшін қарапайым жолды ұсынады.