كيفية القيام بما يلي: تشغيل عدة كشوف لكل عنصر في مجموعة أو صفيف

بناء كشف For Each يشبه For... Next التكرار الحلقي, ولكنه ينفذ مقطع الكشف لكل عنصر في المجموعة, بدلاً من عدد المرات المحددة. الـتكرار الحلقي For Each... Next يستخدم متغير العنصر الذي يمثل عنصر آخر من المجموعة أثناء كل تكرار من التكرار حلقي.

تكرار مقطع كشف لمجموعة

لتنفيذ مجموعة من العبارات لكل عنصر في المجموعة

  1. قم بـتحديد المجموعة التي تيم فيها تنفيذ مقطع الكشف واستخدام عبارة Visual Basic) For Each...Next) لتحديد كلاهما متغير العنصر والمجموعة.

    For Each thisControl As System.Windows.Forms.Control In thisForm.Controls 
    

    إذا لم يتم التصريح عن متغير العنصر خارج الحلقة يمكنك استخدام جملة As لتعريفها كجزء من كشف For Each.

    Visual Basic يستبدل تلقائياً عنصر آخر من المجموعة ألكل تكرار.

  2. قم بـإكمالFor Each... Next الإنشاء باستخدام كشف Next الذي يلي الكشف الأخير ليتم تكرارها. يمكنك تعيين متغير العنصر في كشف Next.

    Sub lightBlueBackground(ByVal thisForm As System.Windows.Forms.Form)
        For Each thisControl As System.Windows.Forms.Control In thisForm.Controls
            thisControl.BackColor = System.Drawing.Color.LightBlue
        Next thisControl 
    End Sub
    

    يمكنك قراءة عناصر المجموعة, ولكن يتعذر إجراء أية تغييرات في المجموعة نفسها, مثل إضافة أو حذف أو استبدال أي عنصر. ومع ذلك، إذا كان العنصر من نوع المرجع ،يمكنك الوصول إليه ثم تعيين أعضائها. لأن كل عنصر Control هو نوع مرجع, التعليمات البرمجية الموجودة في المثال السابق يمكن أن تغير خاصية BackColor الخاصة بها .

تكرار مقطع كشف لصفيف

يمكن أيضًا التكرار عبر صفيف مع For Each... Next التكرار الحلقي. على الرغم من ذلك، كما هو الحال مع المجموعات, يمكن قراءة عناصر الصفيف فقط, وليس تغييرها.

لتنفيذ مجموعة من العبارات لكل عنصر لصفيف

  1. استخدم كشف For Each لتحديد كل من متغير العنصر و الصفيف. لا تتبع اسم الصفيف مع الأقواس.

    Visual Basic يعامل الصفيف بنفس الطريقة التي يعامل بها المجموعة .

  2. اتبع مقطع الكشف مع كشف Next. يمكنك تعيين متغير العنصر في كشف Next.

    الـإجراء التالي مقصود لايجاد مجموع العناصر لصفيف واعادة يعيد تعيين كل عنصر إلى صفر.

    Function sumAndReset(ByRef numbers() As Integer) As Integer
        Dim sum As Integer = 0
        For Each elt As Integer In numbers 
            sum += elt
            ' The following statement works only on the local copy
            ' of the array, not on the original array.
            elt = 0
        Next elt
        Return sum
    End Function
    

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

راجع أيضًا:

المهام

كيفية القيام بما يلي: نقل عنصر تحكم خارج بنية عنصر تحكم

كيفية القيام بما يلي: تشغيل عدة بيانات بشكل متكرر

كيفية القيام بما يلي: تحسين أداء التكرار الحلقي

كيفية القيام بما يلي: الذهاب إلى التكرار التالي من الحلقة

المرجع

عبارة Visual Basic) For...Next)

المبادئ

بنيات القرار

بنيات التكرار الحلقي

بنيات التحكم الأخرى

بنيات التحكم المتداخلة

موارد أخرى

عنصر تحكم التدفق في Visual Basic