تمرير الوسائط حسب الموضع و حسب الاسم

عندما تقوم باستدعاء Sub أو Function إجراء، يمكنك تمرير الوسائط حسب الموضع — في الترتيب الذي تظهر به في تعريف الإجراء — أو يمكنك تمريرهم حسب الاسم ، دون اعتبار للموضع.

عند تمرير وسيطة حسب الاسم، تحدد اسم الوسيطة المُعرّفة متبوعاً بنقطتين وعلامة مساواة (:=) ، متبوعاً بقيمة الوسيطة. يمكنك توفير الوسائط المسماة في أي ترتيب.

على سبيل المثال، Sub يأخذ الإجراء التالي ثلاث وسائط:

Sub studentInfo(ByVal name As String, 
       Optional ByVal age As Short = 0, 
       Optional ByVal birth As Date = #1/1/2000#)

  Debug.WriteLine("Name = " & name & 
                "; age = " & CStr(age) & 
                "; birth date = " & CStr(birth))
End Sub

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

تمرير الوسيطات حسب موضع

يمكنك استدعاء الإجراء studentInfo مع تمرير الوسيطات الخاصة بها حسب الموضع و مفصولة بعلامات بفواصل, كما هو موضح في المثال التالي:

Call studentInfo("Mary", 19, #9/21/1981#)

إذا قمت بحذف وسيطة اختيارية في قائمة الوسائط الموضعية يجب تقييد مكانها بواسطة فاصلة. يستدعي المثال التالي studentInfo بدون age وسيطة:

Call studentInfo("Mary", , #9/21/1981#)

تمرير وسيطات حسب الاسم

بشكل بديل، يمكنك استدعاء studentInfo باستخدام الوسائط التي تم تمريرها حسب الاسم، أيضاً مفصولة بفواصل, كما هو موضح في المثال التالي:

Call studentInfo(age:=19, birth:=#9/21/1981#, name:="Mary")

تمرير الوسائط حسب الموضع و حسب الاسم

يمكنك توفير الوسائط حسب الموضع و حسب الاسم معا في استدعاء إجراء واحد , كما هو موضح في المثال التالي:

Call studentInfo("Mary", birth:=#9/21/1981#)

في المثال السابق، تكون لا ضرورة لفاصلة إضافية لتقييد مكان age الوسيطة المحذوفة منذ birth تم تمريرها حسب الاسم.

عند توفير الوسائط بواسطة خليط من الموضع و الاسم, الوسائط الموضعية يجب أن تأتي كلها أولا. بمجرد توفير وسيطة حسب الاسم، الوسائط المتبقية يجب أن تكون كلها حسب الاسم.

توفير وسيطات اختيارية بواسطة اسم

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

القيود على توفير وسيطات بواسطة الاسم

لا يمكن تمرير الوسائط حسب الاسم لتجنب إدخال الوسائط المطلوبة. يمكنك فقط حذف الوسائط الاختيارية.

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

راجع أيضًا:

المهام

كيفية القيام بما يلي: تمرير الوسيطات إلى إجراء

كيفية القيام بما يلي: تمرر وسيطات إلى إجراء بواسطة الاسم

المرجع

(Visual Basic) اختيارية

ParamArray (Visual Basic)

المبادئ

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

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

تمرير الوسائط بواسطة القيمة و بواسطة المرجع

المعلمات الإختيارية

صفائف المعلمة.