كيفية القيام بما يلي: فرض على وسيطة ليتم تمريرها حسب القيمة

يحدد تعريف الإجراء آلية التمرير. إذا تم التصريح عن معلمة ByRef في (Visual Basic), Visual Basic يتوقع تمرير الوسيطة المطابقة حسب المرجع. يسمح هذا للإجراء إلى تغيير قيمة عنصر البرمجة تابع الوسيطة في التعليمات البرمجية المتصله. إذا كنت أن تحمي العنصر الأساسي ضد مثل هذا التغير يمكنك التجاوز عن ألية التمرير ByRef في اتصال الإجراء بواسطة إحاطة اسم الوسيطة في أقواس. هذه الأقواس بالإضافة إلى الأقواس التي تقوم بإحاطة قائمة الوسائط في الاتصال.

لا يمكن أن تمنع التعليمات البرمجية المصله ألية Visual Basic) ByVal).

لـفرض على وسيطة ليتم تمريرها حسب القيمة

  • يـتم تصريح عن المعلمة المطابقة ByVal في الإجراء, لا تحتاج إلى تنفيذ أية خطوات إضافية. Visual Basic يتوقع بالفعل إلى تمرير وسيطة حسب القيمة.

  • إذا تم التصريح عن معلمة المطابق ByRef في الإجراء قم بتضمين الوسيطة في أقواس في اتصال الإجراء.

مثال

يتجاوز المثال التالي تعريف المعلمة ByRef. في التصال الذي يفرض ByVal، لاحظ مستويين للأقواس.

Sub setNewString(ByRef inString As String)
    inString = "This is a new value for the inString argument."
    MsgBox(inString)
End Sub
Dim str As String = "Cannot be replaced if passed ByVal"

' The following call passes str ByVal even though it is declared ByRef.
Call setNewString((str))
' The parentheses around str protect it from change.
MsgBox(str)

' The following call allows str to be passed ByRef as declared.
Call setNewString(str)
' Variable str is not protected from change.
MsgBox(str)

عندما يتم ضم str بين أقواس إضافية داخل قائمة الوسيطة , اجراء setNewString لا يمكنه تغيير قيمته في التعليمات البرمجية المتصله و MsgBox تعرض "لا يمكن استبداله إذا تم تمريره ByVal". عندما لا يتم ضم str بين الأقواس إضافية, يمكن للإجراء تغييره, و MsgBox يعرض "هذه القيمة جديدة لوسيطة inString."

التحويل البرمجي للتعليمات البرمجية

عند تمرير متغير حسب المرجع عليك استخدام الكلمة الأساسية ByRef لتحديد هذه الآلية.

التمرير الافتراضي في Visual Basic هو تمرير وسيطة بواسطة قيمة. ومع ذلك، تضمين إما الكلمة الأساسية Visual Basic) ByVal) أو ByRef في (Visual Basic) مع كل معلمة مُعلَنة هو تدريب برمجي جيد. هذا يجعل تعليماتك البرمجية أسهل في القراءة.

برمجة نشطة

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

أمان

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

راجع أيضًا:

المهام

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

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

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

المبادئ

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

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

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

الفروق بين الوسيطات القابلة للتعديل و الغير قابلة للتعديل

الفروق بين تمرير الوسيطة على حسب القيمة و حسب المرجع

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

موارد أخرى

تطبيق نوع البيانات