Avatar ·

الاستخدام الصحيح لـ 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`، ومتى يكون من الأفضل إنشاء مجموعة بشكل صريح؟ هل هناك أي عيوب؟ شكرًا مقدمًا على التوضيح.