الاستخدام الصحيح لـ yield return في C#: متى ولماذا؟
مرحبًا بالجميع! لقد بدأت مؤخرًا في تعلم C# وصادفت الكلمة المفتاحية `yield return`. قرأت الوثائق، لكنني لم أفهم تمامًا في أي الحالات يجب استخدامها وفي أي الحالات لا.
على سبيل المثال، لدي دالة تُرجع مجموعة من أرقام فيبوناتشي:
```csharp
public static IEnumerable 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;
}
```
لكنني رأيت البعض يكتبون هكذا:
```csharp
public static 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;
}
}
```
ما الفرق؟ متى يجب استخدام `yield return`، ومتى يكون من الأفضل إنشاء مجموعة بشكل صريح؟ هل هناك أي عيوب؟ شكرًا مقدمًا على التوضيح.