ASP ไดนามิกอาร์เรย์จัดเตรียม Add, Insert, Remove, RemoveAt, Search และเมธอดอื่นๆ ออบเจ็กต์สามารถจัดเก็บไว้ในอาร์เรย์ได้โดยไม่คำนึงถึงปัญหาด้านประสิทธิภาพ
คัดลอกรหัสรหัสดังต่อไปนี้:
คลาสเวกเตอร์
vector_datas ส่วนตัว ()
ส่วนตัว default_capacity 'กำลังการเริ่มต้น
ความจุส่วนตัว_increation 'การเพิ่มความจุ'
ส่วนตัว element_count 'จำนวนองค์ประกอบ
ส่วนตัว max_capacity 'ความจุทั้งหมด
Class_Initialize ส่วนตัว ()
ลบทั้งหมด
จบหมวดย่อย
ฟังก์ชั่นสาธารณะ RemoveAll()
องค์ประกอบ_จำนวน = 0
ความจุเริ่มต้น = 10
ความจุ_เพิ่ม = 10
max_capacity = ความจุเริ่มต้น
ReDim vector_datas (ความจุเริ่มต้น)
สิ้นสุดฟังก์ชัน
ทรัพย์สินสาธารณะรับการนับ()
จำนวน = element_count
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับความจุ()
ความจุ = ความจุสูงสุด
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะ GetInitialCapacity()
ความจุเริ่มต้น = ความจุเริ่มต้น
สิ้นสุดคุณสมบัติ
ทรัพย์สินสาธารณะรับ CapacityIncrease()
ความจุที่เพิ่มขึ้น = ความจุที่เพิ่มขึ้น
สิ้นสุดคุณสมบัติ
คุณสมบัติเริ่มต้นสาธารณะรับรายการ (ดัชนี)
ถ้า IsObject(vector_datas(index)) แล้ว
ชุดรายการ = vector_datas (ดัชนี)
อื่น
รายการ = vector_datas (ดัชนี)
สิ้นสุดถ้า
สิ้นสุดคุณสมบัติ
เพิ่มฟังก์ชั่นสาธารณะ (องค์ประกอบ)
การแทรกการโทร (element_count, องค์ประกอบ)
สิ้นสุดฟังก์ชัน
ฟังก์ชั่นสาธารณะลบ (องค์ประกอบ)
ดัชนีสลัว
ดัชนี = ค้นหา (องค์ประกอบ)
ลบที่(ดัชนี)
ลบ=ดัชนี
สิ้นสุดฟังก์ชัน
ฟังก์ชั่นสาธารณะ RemoveAt (ดัชนี)
ดิม ไอ
สำหรับ i = ดัชนี + 1 ถึง element_count - 1 ขั้นตอนที่ 1
เรียก InternalElement(i - 1, vector_datas(i))
ต่อไป
element_count = element_count - 1
ถ้า max_capacity - ความจุ_เพิ่ม > element_count จากนั้น
max_capacity = max_capacity - ความจุ_increase
ReDim รักษา vector_datas (max_capacity)
สิ้นสุดถ้า
สิ้นสุดฟังก์ชัน
ค้นหาฟังก์ชั่นสาธารณะ (องค์ประกอบ)
ดิม ไอ
สำหรับ i = 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, องค์ประกอบ)
อื่น
ดิม ไอ
สำหรับ i = element_count ถึงดัชนี + 1 ขั้นตอน -1
เรียก InternalElement(i, vector_datas(i - 1))
ต่อไป
เรียก InternalElement (ดัชนีองค์ประกอบ)
สิ้นสุดถ้า
element_count = element_count + 1
ถ้า element_count = max_capacity แล้ว
max_capacity = element_count + ความจุ_increase
ReDim รักษา vector_datas (max_capacity)
สิ้นสุดถ้า
สิ้นสุดฟังก์ชัน
ฟังก์ชั่นสาธารณะ SetElementAt (ดัชนีองค์ประกอบ)
ถ้าดัชนี < 0 หรือดัชนี > element_count - 1 แล้ว
Err.Raise 20903, "Vector", "ดัชนีอาร์เรย์อยู่นอกขอบเขต", "", 0
สิ้นสุดถ้า
เรียก InternalElement (ดัชนีองค์ประกอบ)
สิ้นสุดฟังก์ชัน
ฟังก์ชั่นส่วนตัว InternalElement (ดัชนีองค์ประกอบ)
เมื่อเกิดข้อผิดพลาด ดำเนินการต่อต่อไป
ถ้า IsObject(องค์ประกอบ) แล้ว
ตั้งค่า vector_datas(index) = องค์ประกอบ
อื่น
vector_datas(ดัชนี) = องค์ประกอบ
สิ้นสุดถ้า
ถ้า Err.Number <> 0 แล้ว
MsgBox("Vector InternalElement Error: " & vbCrLf & "ข้อผิดพลาดแหล่งที่มา: " & Err.Source & vbCrLf & "หมายเลขข้อผิดพลาด: " & Err.Number & vbCrLf & "คำอธิบายข้อผิดพลาด: " & Err.Description & vbCrLf)
Err.Clear 'ล้างข้อมูลข้อผิดพลาด
สิ้นสุดถ้า
สิ้นสุดฟังก์ชัน
Class_Terminate ส่วนตัวย่อย () 'การทำลายคลาส
ลบ vector_datas 'ปล่อยหน่วยความจำที่อาร์เรย์ครอบครองและตั้งค่าแต่ละองค์ประกอบเป็น Nothing
Initial_capacity = ว่างเปล่า
ความจุ_เพิ่ม = ว่างเปล่า
element_count = ว่างเปล่า
max_capacity = ว่างเปล่า
จบหมวดย่อย
จบคลาส
บทความนี้มาจากบล็อก CSDN โปรดระบุแหล่งที่มาเมื่อพิมพ์ซ้ำ: