حلقة foreach
كرّر دون استخدام الفهارس
حلقة foreach درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.
ما هي foreach؟
تتيح لكم حلقة foreach زيارة كل عنصر في مجموعة واحدًا تلو الآخر.
لا تديرون فهرسًا أو عدّادًا؛ إذ تمر C# عبر المجموعة نيابةً عنكم، وتسند كل عنصر إلى متغير تختارون اسمه.
وهذه أنظف طريقة لقراءة جميع العناصر في مصفوفة أو قائمة.
البنية الأساسية
البنية بسيطة: foreach (var item in collection) يليها جسم الحلقة.
في كل تكرار، يحتوي item على العنصر التالي. وتنتهي الحلقة تلقائيًا بعد العنصر الأخير.
foreach (var name in names)
{
Console.WriteLine(name);
}أول حلقة foreach لكم
لنمرر عبر مصفوفة من السلاسل النصية ونطبع كل اسم.
لاحظوا عدم وجود فهرس أو فحص للطول. تزور الحلقة كل عنصر بالترتيب فحسب.
string[] names = { "Ada", "Linus", "Grace" };
foreach (var name in names)
{
Console.WriteLine(name);
}متغير الحلقة
متغير الحلقة (وهو n هنا) نسخة جديدة تُنشأ لكل عنصر.
يمكنكم اختيار أي اسم تريدونه. اختاروا اسمًا يصف العنصر، مثل number أو n.
int[] scores = { 90, 75, 88 };
foreach (var n in scores)
{
Console.WriteLine(n);
}استخدام var في مقابل النوع الصريح
يمكنكم كتابة نوع العنصر صراحةً بدلًا من var.
يعمل الخياران بالطريقة نفسها. يتيح var للمصرّف استنتاج النوع، مما يحافظ على قِصر الشيفرة.
int[] scores = { 90, 75, 88 };
foreach (int score in scores)
{
Console.WriteLine(score);
}تنفيذ العمل داخل جسم الحلقة
يمكن لجسم الحلقة تنفيذ أي شيء: عمليات حسابية أو شروطًا أو إنشاء إجمالي.
نضيف هنا كل قيمة إلى مجموع متراكم، ثم نطبع النتيجة بعد انتهاء الحلقة.
int[] nums = { 4, 8, 15 };
int total = 0;
foreach (var x in nums)
{
total += x;
}
Console.WriteLine(total);foreach مع الشروط
يمكنكم وضع if داخل الحلقة لتنفيذ إجراء على عناصر معينة فقط.
يطبع هذا المثال الأعداد الزوجية من المصفوفة فقط.
int[] nums = { 1, 2, 3, 4, 5, 6 };
foreach (var x in nums)
{
if (x % 2 == 0)
Console.WriteLine(x);
}foreach للقراءة لا للاستبدال
متغير الحلقة للقراءة فقط داخل الحلقة. لا يمكنكم إعادة إسناد قيمة إليه لتغيير المجموعة.
سيتسبب هذا السطر في خطأ أثناء الترجمة، لأن متغير foreach غير قابل للتغيير.
foreach (var x in nums)
{
x = x + 1; // ERROR: cannot assign to iteration variable
}التكرار على المحارف
السلسلة النصية عبارة عن تسلسل من المحارف، لذا يمكنكم استخدام foreach معها أيضًا.
يمنحكم كل تكرار محرفًا واحدًا من نوع char من النص.
string word = "code";
foreach (var c in word)
{
Console.WriteLine(c);
}متى نستخدم foreach؟
استخدموا foreach عندما تريدون زيارة كل عنصر ولا تحتاجون إلى الفهرس.
إذا احتجتم إلى الموضع أو أردتم تعديل المجموعة أثناء التكرار، فستكون حلقة for أنسب.
foreach في مقابل for
تدير حلقة for عدّادًا وتستخدم الفهرسة مثل arr[i].
تخفي foreach هذه الآلية، فهي أقصر وتتجنب أخطاء الفارق بمقدار واحد عندما تحتاجون إلى قراءة كل عنصر فحسب.
for (int i = 0; i < names.Length; i++)
{
Console.WriteLine(names[i]);
}تحقق سريع
اختبروا ما تعلّمتموه عن حلقة foreach.
مراجعة
تعلّمتم أن foreach تزور كل عنصر في مجموعة من دون استخدام فهرس.
ومتغير الحلقة نسخة من كل عنصر للقراءة فقط. استخدموا foreach للقراءة بوضوح، وfor عندما تحتاجون إلى الموضع أو تريدون تعديل العناصر.
الأسئلة الشائعة
هل درس «حلقة foreach» مجاني؟
نعم — نص درس «حلقة foreach» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.
ماذا ستتعلم في «حلقة foreach»؟
كرّر دون استخدام الفهارس تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «حلقة foreach»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.