Avatar ·

ما الغرض من الكلمة المفتاحية 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; } } ``` ما الفرق؟ متى يجب استخدام الخيار الأول، ومتى