زيادة تحميل الإجراء

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

قوانين زيادة الحمل

عندما تقوم بزيادة حمل إجراء، تطبق القوانين التالية:

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

  • توقيع مختلف. كل إصدار ذو حمل زائد يجب أن يختلف عن كل الإصدارات ذات الحمل الزائد في على الأقل أحد النواحي التالية:

    • عدد المعلمات

    • ترتيب المعلمات

    • أنواع بيانات المعلمات

    • عدد معلمات النوع (لإجراء عام)

    • نوع الإرجاع (فقط لعامل تحويل)

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

  • عناصر ليست جزء من التوقيع. لايمكنك زيادة حمل إجراء دون تفاوت التوقيع. بالتحديد، لايمكنك زيادة حمل الأجراء بتفاوت أحد العناصر التالية أو أكثر:

    • الكلمات الأساسية لمعدلات الإجراء، مثل Public, Shared ،و Static.

    • أسماء معلمات نوع او المعلمات

    • قيود معلمات النوع (لمعامل التحويل فقط)

    • الكلمات الأساسية لمعدلات المعلمة، مثل ByRef و Optional.

    • سواء كان يقوم بإرجاع قيمة

    • نوع بيانات قيمة الإرجاع (ماعدا لعامل التحويل)

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

  • وسيطات منضم متأخر. إذا كنت تريد تمرير متغير كائن منضم متأخر إلى الإصدار ذو تحميل زائد, يجب أن تقوم بتعريف المعلمة المناسبة كـ Object.

إصدارات متعددة لإجراء

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

Sub postName(ByVal custName As String, ByVal amount As Single)
    ' Insert code to access customer record by customer name.
End Sub
Sub postAcct(ByVal custAcct As Integer, ByVal amount As Single)
    ' Insert code to access customer record by account number.
End Sub

إصدارات ذات الحمل الزائد

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

Overloads Sub post(ByVal custName As String, ByVal amount As Single)
    ' Insert code to access customer record by customer name.
End Sub
Overloads Sub post(ByVal custAcct As Integer, ByVal amount As Single)
    ' Insert code to access customer record by account number.
End Sub

تحميلات زائدة إضافية

إذا أردت أيضاً قبول مبلغ محول في إما Decimal أو Single، يمكنك زيادة حمل post للسماح لهذا الاختلاف. إذا قمت بذلك لكل زيادة حمل في المثال السابق، ستحصل على أربع إجراءات Sub، كلهم بنفس الاسم لكن مع أربع تواقيع مختلفة.

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

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

Imports MSVB = Microsoft.VisualBasic
Dim customer As String
Dim accountNum As Integer
Dim amount As Single
customer = MSVB.Interaction.InputBox("Enter customer name or number")
amount = MSVB.Interaction.InputBox("Enter transaction amount")
Try
    accountNum = CInt(customer)
    Call post(accountNum, amount)
Catch
    Call post(customer, amount)
End Try

راجع أيضًا:

المهام

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

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

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

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

المرجع

الزوائد (Visual Basic)

المبادئ

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

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

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

الـأنواع العامة في Visual Basic