سؤال
لنفترض أن لدى فئة وحدة نمطية 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 هو نفسه, لا يوجد فرق في عندما وجوه الخاص بك سوف يتم تدميرها.