لما نحتاج الكلمة المفتاحية yield في C#؟ كيف نستخدم yield return و yield break؟
مرحباً بالجميع! لقد بدأت للتو في تعلم C# وصادفت الكلمة المفتاحية `yield`. بصراحة، لا أفهم تماماً لماذا نحتاجها وكيف نستخدمها بشكل صحيح.
رأيت أمثلة حيث يتم استخدام `yield return` داخل دوال تُرجع `IEnumerable` أو `IEnumerable`. لكن لدي سؤالان:
1. ما الفرق بين إرجاع مجموعة عادية (مثلاً `List` عبر `return`) واستخدام `yield return`؟
2. متى نحتاجها فعلياً في مشاريع حقيقية، وليس فقط في أمثلة تعليمية؟
هذا مثال وجدته على MSDN، لكنه يبدو غريباً بالنسبة لي:
```csharp
static IEnumerable GetNumbers()
{
for (int i = 0; i < 10; i++)
{
yield return i;
}
}
```
لماذا لا يمكننا ببساطة فعل هذا؟
```csharp
static List GetNumbers()
{
List list = new List();
for (int i = 0; i < 10; i++)
{
list.Add(i);
}
return list;
}
```
فالنتيجة تبدو نفسها — نحصل على