توفر مجموعة ASP الديناميكية طرق الإضافة والإدراج والإزالة والإزالة والبحث وغيرها من الطرق. يمكن تخزين الكائنات في صفائف بغض النظر عن مشكلات الكفاءة
انسخ رمز الكود كما يلي:
ناقل الطبقة
Vector_datas الخاص ()
القدرة الأولية الخاصة "قدرة التهيئة".
خاص القدرات_increment 'زيادة القدرات
خاص element_count 'عدد العناصر
السعة القصوى الخاصة "السعة الإجمالية".
فئة فرعية خاصة_Initialize()
إزالة الكل
نهاية الفرعية
الوظيفة العامة RemoveAll()
عدد العناصر = 0
السعة الأولية = 10
زيادة السعة = 10
max_capacity = original_capacity
ReDim Vector_datas (السعة_الأولية)
وظيفة النهاية
الحصول على الملكية العامة ()
العدد = element_count
نهاية الملكية
الملكية العامة تحصل على السعة()
السعة = max_capacity
نهاية الملكية
الملكية العامة GetInitialCapacity()
السعة الأولية = السعة الأولية
نهاية الملكية
الملكية العامة تحصل على سعة السعة ()
زيادة السعة = زيادة السعة
نهاية الملكية
الخاصية الافتراضية العامة احصل على العنصر(الفهرس)
إذا كان IsObject(vector_datas(index)) إذن
تعيين العنصر = Vector_datas (الفهرس)
آخر
العنصر = Vector_datas (الفهرس)
نهاية إذا
نهاية الملكية
إضافة وظيفة عامة (عنصر)
استدعاء إدراج (element_count، عنصر)
وظيفة النهاية
إزالة الوظيفة العامة (العنصر)
مؤشر خافت
الفهرس = بحث (عنصر)
إزالة في (الفهرس)
إزالة=index
وظيفة النهاية
الوظيفة العامة RemoveAt(الفهرس)
خافت ط
لأن i = فهرس + 1 إلى element_count - 1 الخطوة 1
استدعاء InternalElement(i - 1, Vector_datas(i))
التالي
element_count = element_count - 1
إذا كانت السعة القصوى - زيادة السعة> عدد العناصر ثم
max_capacity = max_capacity - سعة_الزيادة
ReDim الحفاظ على Vector_datas (max_capacity)
نهاية إذا
وظيفة النهاية
البحث عن الوظائف العامة (العنصر)
خافت ط
لأني = 0 إلى element_count - 1 الخطوة 1
إذا Vector_datas(i) = العنصر ثم
بحث = ط
وظيفة الخروج
نهاية إذا
التالي
بحث=-1
وظيفة النهاية
إدراج الوظيفة العامة (الفهرس، العنصر)
إذا كان الفهرس> element_count إذن
Err.Raise 20903، "Vector"، "مؤشر الصفيف خارج الحدود."، ""، 0
نهاية إذا
إذا element_count = 0 ثم
استدعاء InternalElement(0، عنصر)
مؤشر ElseIf = element_count ثم
استدعاء InternalElement(element_count, element)
آخر
خافت ط
لأن i = element_count للفهرس + 1 الخطوة -1
استدعاء InternalElement(i, Vector_datas(i - 1))
التالي
استدعاء InternalElement(الفهرس، العنصر)
نهاية إذا
element_count = element_count + 1
إذا element_count = max_capacity إذن
max_capacity = عدد العناصر + زيادة السعة
ReDim الحفاظ على Vector_datas (max_capacity)
نهاية إذا
وظيفة النهاية
الوظيفة العامة SetElementAt(الفهرس، العنصر)
إذا كان الفهرس <0 أو الفهرس> element_count - 1 ثم
Err.Raise 20903، "Vector"، "مؤشر الصفيف خارج الحدود."، ""، 0
نهاية إذا
استدعاء InternalElement(الفهرس، العنصر)
وظيفة النهاية
العنصر الداخلي للوظيفة الخاصة (الفهرس، العنصر)
على خطأ استئناف التالي
إذا كان IsObject(element) إذن
تعيين Vector_datas(index) = element
آخر
Vector_datas(index) = element
نهاية إذا
إذا Err.Number <> 0 ثم
MsgBox("خطأ المتجه الداخلي: " & vbCrLf & "مصدر الخطأ: " & Err.Source & vbCrLf & "رقم الخطأ: " & Err.Number & vbCrLf & "وصف الخطأ: " & Err.Description & vbCrLf)
Err.Clear 'مسح معلومات الخطأ
نهاية إذا
وظيفة النهاية
Private Sub Class_Terminate() 'تدمير الفئة
مسح Vector_datas 'حرر الذاكرة التي تشغلها المصفوفة واضبط كل عنصر على لا شيء
السعة الأولية = فارغة
سعة_الزيادة = فارغة
element_count = فارغ
max_capacity = فارغ
نهاية الفرعية
نهاية الفصل
هذه المقالة مأخوذة من مدونة CSDN، يرجى الإشارة إلى المصدر عند إعادة الطباعة: