Avatar ·

لما نحتاج الكلمة المفتاحية 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; } ``` فالنتيجة تبدو نفسها — نحصل على