C# Programming

الحصول على المؤشرات بكفاءة في تكرارات C#

Spread the love

تُعدّ حلقة foreach في C# طريقة ملائمة للتكرار عبر المجموعات، لكنها لا توفر بشكلٍ مُضمَر مُؤشّر التكرار الحالي. وقد يكون هذا غير ملائم عندما تحتاج إلى العنصر ومؤشّره معًا. تتناول هذه المقالة طريقتين فعّالَتين لاسترداد المؤشّر داخل تكرار مشابه لـ foreach.

جدول المحتويات

استخدام طريقة Select() في LINQ

توفر طريقة Select() في LINQ طريقة مُوجزة للحصول على كل من العنصر ومؤشّره. فهي تُحوّل المجموعة الأصلية إلى تسلسل جديد حيث يتمّ إقران كل عنصر بمؤشّره.


using System;
using System.Collections.Generic;
using System.Linq;

public class ForeachIndexExample
{
    public static void Main(string[] args)
    {
        List<string> names = new List<string>() { "Alice", "Bob", "Charlie", "David" };

        // استخدام Select() للحصول على المؤشر والعنصر
        var indexedNames = names.Select((name, index) => new { Name = name, Index = index });

        // التكرار عبر التسلسل المُؤشّر
        foreach (var item in indexedNames)
        {
            Console.WriteLine($"Name: {item.Name}, Index: {item.Index}");
        }
    }
}

يقوم هذا الكود بإنشاء نوع مجهول جديد يحتوي على كل من الاسم ومؤشّره. ثمّ تتكرّر حلقة foreach عبر هذا التسلسل الجديد، مما يوفر الوصول إلى كلا القطعتين من المعلومات. تُعدّ هذه الطريقة قابلة للقراءة وتعمل بشكلٍ جيد مع مجموعات من أي حجم.

استخدام حلقة for القياسية

للحصول على أداء مُحسّن، خاصةً مع المجموعات الكبيرة، توفر حلقة for القياسية نهجًا أكثر مباشرة. هذا يتجنّب عبء إنشاء تسلسل جديد.


using System;
using System.Collections.Generic;

public class ForeachIndexExample
{
    public static void Main(string[] args)
    {
        List<string> names = new List<string>() { "Alice", "Bob", "Charlie", "David" };

        // استخدام حلقة for مع المؤشر
        for (int index = 0; index < names.Count; index++)
        {
            string name = names[index];
            Console.WriteLine($"Name: {name}, Index: {index}");
        }
    }
}

تصل هذه الطريقة مباشرةً إلى العناصر باستخدام مؤشّراتها. وبينما لا تستخدم حلقة foreach، إلا أنها توفر حلاً أكثر كفاءة لمجموعات البيانات الكبيرة.

يعتمد الاختيار بين هاتين الطريقتين على أولوياتك. توفر طريقة Select() سهولة القراءة، بينما توفر حلقة for أداءً أفضل للمجموعات الأكبر. ضع في اعتبارك حجم بياناتك وأهمية سهولة القراءة عند اتخاذ اختيارك.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *