سؤال

لنفترض أن لدى فئة وحدة نمطية clsMyClass مع كائن كعضو متغير.المدرجة أدناه هي اثنين إكمال تطبيقات هذه فئة بسيطة.

تنفيذ 1:

Dim oObj As New clsObject

تنفيذ 2:

Dim oObj As clsObject

Private Sub Class_Initialize()
    Set oObj = New clsObject
End Sub

Private Sub Class_Terminate()
    Set oObj = Nothing
End Sub

هل هناك أي الوظيفية الفرق بين هذين ؟ على وجه الخصوص ، هو عمر oObj نفس الشيء ؟

هل كانت مفيدة؟

المحلول

في تنفيذ 1 clsObject لن تحصل على مثيل حتى يتم استخدامه.إذا لم تستخدم قط ، ثم clsObject.Class_Initialize الحدث النار أبدا.

في تنفيذ 2 clsObject سبيل المثال سيتم إنشاء في نفس الوقت أن clsMyClass هو مثيل.على clsObject.Class_Initialize دائما سوف يعدم إذا clsMyClass يتم إنشاؤه.

نصائح أخرى

إذا كان في التنفيذ 1 الإعلان داخل الصف وليس الفرعية ، نعم نطاق هو نفسه لكل من الأمثلة.

متغير الكائن سيتم تدمير كلما جمع القمامة يحدد لا يوجد المزيد من الإشارات إلى كائن قال.حتى في مثالين على افتراض نطاق clsObject هو نفسه, لا يوجد فرق في عندما وجوه الخاص بك سوف يتم تدميرها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top