اعتبارات في إجراءات التحميل الزائد

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

يمكنك القيام بالتحميل الزائد لإجراء Function مع إجراء Sub ، والعكس بالعكس متوفر أن لديهم تواقيع مختلفة . لا يختلف اثنين من التحميلات الزائدة فقط في ذلك أن إحدهما لديها قيمة إرجاع و الأخرى ليس لديها.

يمكنك القيام بالتحميل الزائد لخاصية بنفس الطريقة التي التحميل الزائد لإجراء، مع نفس القيود. ومع ذلك، لا يمكنك التحميل الزائد لإجراء مع خاصية أو العكس بالعكس.

بدائل لإصدارات محمّلة فوق طاقتها

لديك أحياناً بدائل الإصدارات محمله بشكل زائد ، خاصة عندما يكون وجود الوسيطات اختياري أو الرقم الخاص بها متغير.

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

وسيطات اختيارية و محملة بشكل زائد

عند تتمكن التعليمات البرمجية المستدعية بشكل اختياري من توفير أو حذف وسيطة واحدة أو أكثر, يمكن تعريف إصدارات محملة بشكل زائد متعددة أو استخدام المعلمات الاختيارية.

متى تقوم باستخدام الإصدارات المحملة بشطل زائد

يمكنك أن تأخذ بعين الاعتبار تعريف سلسلة من الإصدارات المحملة بشكل زائد في الحالات التالية:

  • المنطق في التعليمات البرمجية للإجراء مختلفة اختلافاً هاماً حسب ما إذا كان التعليمات البرمجية المستدعية توفر وسيطة اختيارية أم لا.

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

متى يمكن استخدام معلمات اختيارية

قد تفضل واحدة أو أكثر من المعلمات الاختيارية في الحالات التالية:

  • الـإجراء الوحيد المطلوب فقط هو عندما لا توفر التعليمات البرمجية الستدعية وسيطة اختيارية لتعيين المعلمة إلى القيمة الافتراضية. في مثل هذه الحالة، التعليمات البرمجية للإجراء يمكن أن يكون أقل تعقيداً إذا قمت بتعريف إصدار واحد مع واحد أو أكثر من Optional المعلمات.

لمزيد من المعلومات، راجع المعلمات الإختيارية.

التحميل الزائد و ParamArrays

عندما تتمكن التعليمات البرمجية المستدعية من تمرير عدد متغير من الوسائط, يمكنك تحديد إصدارات محملة بشكل زائد متعددة أو استخدام صفيف معلمة.

متى تقوم باستخدام الإصدارات المحملة بشطل زائد

يمكنك أن تأخذ بعين الاعتبار تعريف سلسلة من الإصدارات المحملة بشكل زائد في الحالات التالية:

  • تعرفأن تعليمات برمجية المستدعية لا تمرير أبداً أكثر من عدد قليل من القيم لصفيف المعلمة.

  • المنطق في التعليمات البرمجية للإجراء مختلفة اختلافاً هاماً حسب عدد القيم التي تمررها التعليمات البرمجية المستدعية.

  • يمكن للتعليمات البرمجية المستدعية تمرير قيم من أنواع بيانات مختلفة.

متى تستخدم صفيف معلمات

يتم التقديم بشكل أفضل بواسطة ParamArray المعلمة في الحالات التالية:

  • ليس لديك القدرة لتوقع عدد القيم التي يمكن أن تمريرها التعليمات البرمجية المستدعية لصفيف المعلمة, و قد يكون رقم كبير.

  • منطق الإجراء يزود نفسه بالتكرار عبر كل القيم التي تتمريرها التعليمات البرمجية المستدعية, تنفيذ بشكل أساسي نفس العمليات على كل قيمة.

لمزيد من المعلومات، راجع صفائف المعلمة..

التحميل الزائد الضمني لمعلمات اختيارية

الـإجراء مع معلمة (Visual Basic) اختيارية يكافئ اثنين من الإجراءات المحمّلة فوق طاقتها, الأول مع معلمة اختيارية والثاني بدونها. لا يمكنك التحميل بشكل زائد إجراء مع قائمة معلمات المطابقة لأي منهما. الـتعريفات التالية توضح هذا.

Overloads Sub q(ByVal b As Byte, Optional ByVal j As Long = 6)
' The preceding definition is equivalent to the following two overloads.
' Overloads Sub q(ByVal b As Byte)
' Overloads Sub q(ByVal b As Byte, ByVal j As Long)
' Therefore, the following overload is not valid because the signature is already in use.
' Overloads Sub q(ByVal c As Byte, ByVal k As Long)
' The following overload uses a different signature and is valid.
Overloads Sub q(ByVal b As Byte, ByVal j As Long, ByVal s As Single)

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

التحميلات بشكل زائد ضمنية لمعلمة ParamArray

يأخذ المحول البرمجي في الاعتبار إجراء مع معلمة ParamArray (Visual Basic) لامتلاك عدد لا نهائي من التحميل الزائد, تختلف عن بعضها البعض في ما تقوم التعليمات البرمجية المستدعية بتمريره إلى صفيف المعلمة كما يلي:

  • تحميل زائد واحد لـ عندما لا توفر التعليمات البرمجية المستدعية وسيطة إلى ParamArray

  • تحميل زائد لـ عندما توفر التعليمات البرمجية المستدعية صفيف أحادي الأبعاد من ParamArray نوع عنصر

  • لـكل عدد صحيح موجب, تحميل زائد لـ عندما توفر التعليمات البرمجية المستدعية ذلك العدد من الوسائط، كل من ParamArray نوع العنصر

توضح التعريفات التالية هذه التحميلات الزائدة الضمنية.

Overloads Sub p(ByVal d As Date, ByVal ParamArray c() As Char)
' The preceding definition is equivalent to the following overloads.
' Overloads Sub p(ByVal d As Date)
' Overloads Sub p(ByVal d As Date, ByVal c() As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char)
' Overloads Sub p(ByVal d As Date, ByVal c1 As Char, ByVal c2 As Char)
' And so on, with an additional Char argument in each successive overload.

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

' The following overload is not valid because it takes an array for the parameter array.
' Overloads Sub p(ByVal x As Date, ByVal y() As Char)
' The following overload takes a single value for the parameter array and is valid.
Overloads Sub p(ByVal z As Date, ByVal w As Char)

البرمجة بلا نوع مثل بديل للتحميل الزائد

إذا كنت ترغب في السماح للتعليمات البرمجية المستدعية بتمرير أنواع بيانات مختلفة لمعلمة, أسلوب بديل هوالبرمجة اللا نوعية في Visual Basic. يمكنك تعيين مُبَدْل التحقق من النوع إلى Off مع إما كشف الخيار الصارمِ أو optionstrict/ خيار برنامج التحويل البرمجي. بعدها لست بحاجة إلى تعريف نوع البيانات المعلمة . ومع ذلك، فإن هذا الأسلوب له العيوب التالية مقارنة مع التحميل الزائد:

  • تنتج برمجة بلا نوع فعالية أقل بتنفيذ التعليمات البرمجية.

  • يجب على الإجراء اختبار لكل نوع بيانات الذي يتوقع أن يمر.

  • لا يمكن للمحول البرمجي ارسال إشارة خطأ إذا قامت التعليمات البرمجية المستدعية بتمرير نوع بيانات الذي لا يدعمة الإجراء.

راجع أيضًا:

المهام

إجراءات استكشاف الأخطاء وإصلاحها

كيفية القيام بما يلي: تعريف الإصدارات المتعددة للإجراء

كيفية القيام بما يلي: إستدعاء إجراء محمّل تحميلا زائدا‬ً

كيفية القيام بما يلي: زيادة تحميل إجراء الذي يأخذ المعلمات الاختيارية

كيفية القيام بما يلي: التحميل الزائد لإجراء الذي يأخذ عدد لا نهائي من المعلمات

المرجع

الزوائد (Visual Basic)

المبادئ

الـإجراءات في Visual Basic

معلمات إجراء و وسيطات

دقة التحميل الزائد