قم بإجراء الربط في فئات (F#)

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

[static] do expression

ملاحظات

على doيظهر ربط مع أو بعد letالروابط ولكن قبل ملفات تعريف عضو في فئة تعريف. على الرغم من أن doالكلمة الأساسية هو اختيارية ل doالربط على المستوى وحدة نمطية?، فإنه هو غير اختياري ل doروابط في تعريف الفئة.

للبناء لكل كائن أي تحديد النوع، غير ثابت doروابط وغير ثابت letالروابط التي يتم تنفيذها بالترتيب الذي تظهر به في فئة. تعريف doيمكن أن يحدث الربط في " متعددة نوع واحد. غير ثابت letروابط و غير الثابت doروابط يصبح نص أساسي المنشئ. تعليمات برمجية في غير ثابت doالمقطع روابط يمكن مرجع معلمات الدالة الإنشائية الأساسية والقيم أو الدالات التي تم تعريفها في أي letمقطع "الارتباطات".

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

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

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

ويتم تجاهل السمات doالروابط الموجودة في الأنواع. إذا كانت سمة هو للتعليمات البرمجية التي تنفذ في doربط، يجب تطبيقها على الدالة الإنشائية الأساسي.

في التعليمة البرمجية التالية، لدى فئة ثابتة doربط و غير ثابت doالربط. يحتوي الكائن على الدالة الإنشائية له الثاني المعلمات، aو b، و الثاني المعرفة في حقول خاصة letالربط من أجل فئة. يتم تعريف خاصيتين أيضا. الجميع هذه موجودة في نطاق في غير ثابت doمقطع روابط، ك هو موضحة بالخط الذي يطبع الجميع تلك قيم.

open System

type MyType(a:int, b:int) as this =
    inherit Object()
    let x = 2*a
    let y = 2*b
    do printfn "Initializing object %d %d %d %d %d %d"
               a b x y (this.Prop1) (this.Prop2)
    static do printfn "Initializing MyType."
    member this.Prop1 = 4*x
    member this.Prop2 = 4*y
    override this.ToString() = System.String.Format("{0} {1}", this.Prop1, this.Prop2)

let obj1 = new MyType(1, 2)

الإخراج هو كما يلي.

Initializing MyType.
Initializing object 1 2 2 4 8 16

راجع أيضًا:

المرجع

الفئات (F#)

ترك للربط في فئات (F#)

قم بالربط (F#)

المبادئ

الأعضاء (F#)

المنشئات (F#)