Yield কিওয়ার্ড একটি কালেকশনের ওপর কাস্টম স্টেটফুল ইটারেশন করতে সাহায্য করে। অর্থাৎ, যখন আমরা `yield` কিওয়ার্ড ব্যবহার করি, কন্ট্রোল কলার ফাংশন থেকে সোর্সে এবং সোর্স থেকে কলার ফাংশনে ব लिये যেতে থাকে।
উদাহরণ
using System;
using System.Collections.Generic;
namespace DemoApplication
{
class Program
{
static List numbersList = new List { 1, 2, 3, 4, 5 };
public static void Main()
{
foreach (int i in RunningTotal())
{
Console.WriteLine(i);
}
Console.ReadLine();
}
public static IEnumerable RunningTotal()
{
int runningTotal = 0;
foreach (int i in numbersList)
{
runningTotal += i;
yield return (runningTotal);
}
}
}
}
আউটপুট
1
3
6
10
15
উপরের উদাহরণে, মেইন মেথডের `foreach`-এ আমরা `RunningTotal`-এর নাম্বার লিস্ট দিয়ে লুপ করছি। তাই যখনই `yield return` কল হয়, কন্ট্রোল মেইন মেথডের `foreach` লুপে ফিরে যায় এবং মান প্রিন্ট করে। প্রিন্ট হওয়ার পর কন্ট্রোল আবার `RunningTotal`-এর `foreach`-এ চলে যায়। এখানে একটি বিষয় লক্ষ্য করা দরকার যে প্রিভিয়াস ভ্যালুও সংরক্ষিত থাকে। এক কথায়, `yield` কিওয়ার্ড কার্যকরভাবে একটি লেজি এনিউমেরেশন তৈরি করে কালেকশন আইটেমগুলোর ওপর যা অনেক বেশি ইফিশিয়েন্ট হতে পারে।