هل البرمجة.القاموس RemoveAll() طريقة الإفراج عن جميع عناصرها أولا ؟
-
09-06-2019 - |
سؤال
في VB6 التطبيق لدي Dictionary
الذي المفاتيح String
s والقيم الحالات من فئة مخصصة.لو اتصل RemoveAll()
على Dictionary
, ، وسوف الحرة الأولى مخصصة الكائنات ؟ أو هل أنا صراحة تحتاج إلى القيام بذلك بنفسي ؟
Dim d as Scripting.Dictionary
d("a") = New clsCustom
d("b") = New clsCustom
' Are these two lines necessary?
Set d("a") = Nothing
Set d("b") = Nothing
d.RemoveAll
المحلول
نعم ، كل الكائنات في Dictionary
سيتم الافراج عنهم بعد استدعاء RemoveAll()
.من الأداء (كما في السرعة) نظر أود أن أقول تلك الخطوط تحديد المتغيرات Nothing
غير ضرورية, لأن رمز إلى أول نظرة لهم على أساس مفتاح أسماء حين RemoveAll()
سوف نعدد والإفراج عن كل شيء في حلقة واحدة.
نصائح أخرى
RemoveAll
سيتم إزالة جميع الجمعيات من Dictionary
:كل المفاتيح والقيم.سيكون مرجع تسرب عن Dictionary
للحفاظ على إشارة إلى القيم في Dictionary
.
إذا كان هناك أي المتغيرات الأخرى التي تشير إلى العناصر الموجودة في المجموعة ثم تلك الأشياء يجب أن يسلم إلى جمع القمامة إلى تنظيف المرة القادمة GC هو تشغيل.
إذا كنت على سبيل المثال هل هذا حيث sObj هو متغير ثابت في مكان ما ثم عندما GC استدعاء المقبل من قبل النظام ، الكائن الأول سيتم تنظيف ولكن الثاني الذي لا يزال هو المشار إليه من قبل sObj لا.
d("a") = New clsCustom
d("b") = New clsCustom code.
sObj = d("b")
d.RemoveAll()