Sobes.tech
Junior — Middle

Обяснете принципа на работа на функцията yield и как се използва при реализирането на итератори в Python.

sobes.tech AI

Отговор от AI

В C# ключовата дума yield се използва за опростяване на реализирането на итератори. Тя позволява на методите да връщат елементи един по един, без да създават цялата колекция в паметта веднага.

Когато метод съдържа yield return, той става итератор, който при всяко извикване връща следващия елемент от последователността и запазва състоянието си между извикванията.

Пример:

public IEnumerable<int> GetNumbers()
{
    yield return 1;
    yield return 2;
    yield return 3;
}

// Използване
foreach(var num in GetNumbers())
{
    Console.WriteLine(num);
}

Тук методът GetNumbers връща числата по едно при всяка итерация. Това е удобно за лениво генериране на последователности, спестява памет и улеснява кода в сравнение с ръчното реализиране на интерфейсите IEnumerable и IEnumerator.