ما الغرض من الكلمة المفتاحية yield في C# وكيف تعمل؟
مرحبًا بالجميع! لقد بدأت مؤخرًا في تعلم C# وصادفت الكلمة المفتاحية `yield`. قرأت الوثائق على MSDN لكنني لم أفهم تمامًا ما الغرض منها. يبدو أنه يمكن ببساطة إرجاع قائمة أو مصفوفة من الدالة، فلماذا استخدام yield return؟
لدي هذا الكود: أكتب دالة تُنشئ تسلسل أرقام فيبوناتشي. حاليًا أفعل ذلك بهذه الطريقة:
```csharp
public List GetFibonacci(int count)
{
var result = new List();
int a = 0, b = 1;
for (int i = 0; i < count; i++)
{
result.Add(a);
int temp = a;
a = b;
b = temp + b;
}
return result;
}
```
لكني رأيت أنه يمكن كتابة نفس الشيء باستخدام `yield return`:
```csharp
public IEnumerable GetFibonacci(int count)
{
int a = 0, b = 1;
for (int i = 0; i < count; i++)
{
yield return a;
int temp = a;
a = b;
b = temp + b;
}
}
```
ما الفرق؟ متى يجب استخدام الخيار الأول، ومتى