عبارة التفويض

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

[ <attrlist> ] [ accessmodifier ] _
[ Shadows ] Delegate [ Sub | Function ] name [( Of typeparamlist )] [([ parameterlist ])] [ As type ]

الأجزاء

  • attrlist
    اختياري. قائمة سمات التي تنطبق لهذا المفوض. السمات المتعددة تفصل بفواصل. يجب أن تحيط قائمة السمة بأقواس زاوية ("<"و">").

  • accessmodifier
    اختياري. تحدد أي التعليمات البرمجية يمكنها الوصول إلى المفوض. يمكن أن يكون أحد الخيارات التالية:

    • عام. أي تعليمات برمجية يمكنها الوصول إلى العنصر الذي يعرف المفوض يمكنها الوصول إلى المفوض.

    • محمي. فقط التعليمات البرمجية الموجودة ضمن فئة المفوض أو فئة مشتقة منها يمكنها الوصول إلى المفوض.

    • صديق. فقط التعليمات البرمجية الموجودة في نفس التجميع يمكنها الوصول إلى المفوض.

    • خاص. فقط التعليمات البرمجية الموجودة ضمن العنصر الذي يعرف المفوض يمكنها الوصول إليه.

    يمكنك تحديد Protected Friend لتمكين الوصول من التعليمات البرمجية الموجودة ضمن فئة المفوض، فئة مشتقة منها، أو نفس التجميع.

  • Shadows
    اختياري. تشير إلى أن هذا المفوض يعيد تعريف و يخفي عنصر برمجة له اسم مطابق. يمكنك تظليل أي نوع من عناصر معرفه مع أي نوع أخر.

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

  • Sub
    اختياري، لكن يجب أن يظهر إما Sub أو Function. يعرف هذا الإجراء كإجراء Sub لمفوض لايرجع قيمة.

  • Function
    اختياري، لكن يجب أن يظهر إما Sub أو Function. يعرف هذا الإجراء كإجراء Function لمفوض يرجع قيمة.

  • name
    مطلوبة. اسم نوع المفوض: يتبع اصطلاحات تسمية المتغير القياسية.

  • typeparamlist
    اختياري. قائمة نوع المعلمات لهذا المفوض. نوع المعلمات المتعدد يفصل بفواصل. اختياري، يمكن تعريف كل نوع معلمة بشكل مختلف باستخدام معدلات In و Out العامة. يجب إحاطة نوع القائمة بأقواس و تقديمه مع الكلمة الأساسية Of.

  • parameterlist
    اختياري. قائمة المعلمات التي يتم تمريرها إلى الإجراء عندما يتم استدعائه. يجب إحاطة قائمة المعلمة بأقواس.

  • type
    مطلوبة إذا قمت بتحديد إجراء Function. نوع بيانات القيمة المرجعة.

ملاحظات

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

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

كل فئة مفوض تعرف دالة إنشاء التي تم تمريرها لمواصفات أسلوب الكائن. وسيطة لمنشئ مفوض يجب أن تكون مرجع لأسلوب، أو تعبير لامدا.

لتحديد مرجع لأسلوب، استخدم بناء الجملة التالي:

AddressOf [expression.]methodname

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

لتحديد تعبير لامدا، استخدم بناء الجملة التالي:

Function ([parm مثل type, parm2 مثل type2, ...]) expression

التوقيع الدالة يجب أن يطابق توقيع نوع المفوض. لمزيد من المعلومات حول تعبير لامدا، راجع تعبيرات لامدا.

مثال

يستخدم المثال التالي العبارة Delegate لتعريف مفوض لتعمل على رقمين و إرجاع رقم. الأسلوب DelegateTest يأخذ مثيل مفوض لهذا النوع و يستخدمه ليعمل على زوج من الأرقام.

Delegate Function MathOperator( 
    ByVal x As Double, 
    ByVal y As Double 
) As Double

Function AddNumbers( 
    ByVal x As Double, 
    ByVal y As Double 
) As Double
    Return x + y
End Function

Function SubtractNumbers( 
    ByVal x As Double, 
    ByVal y As Double
) As Double
    Return x - y
End Function

Sub DelegateTest( 
    ByVal x As Double, 
    ByVal op As MathOperator, 
    ByVal y As Double 
)
    Dim ret As Double
    ret = op.Invoke(x, y) ' Call the method.
    MsgBox(ret)
End Sub

Protected Sub Test()
    DelegateTest(5, AddressOf AddNumbers, 3)
    DelegateTest(9, AddressOf SubtractNumbers, 3)
End Sub

راجع أيضًا:

المهام

كيفية القيام بما يلي: استخدام فئة عامة

المرجع

عامل التشغيل AddressOf

من عبارة (Visual Basic)

في (معدّل عام) في (Visual Basic)

Out (معدّل عام) في (Visual Basic)

المبادئ

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

موارد أخرى

المفوضين (Visual Basic)

التباين المشترك و Contravariance في (C#و Visual Basic)