从VB.NET对象的arraylist中检索数据

Tim*_*ter 7 vb.net arraylist

我试图从对象的ArrayList(.NET 1.1 Framework)中检索正确的值:

我有以下定义:

Public AlList As New ArrayList

Public Class ItemInfo
    Public ItemNo As Int16
    Public ItemType As String
    Public Reports As Array
    Public PDFs As Array
End Class
Run Code Online (Sandbox Code Playgroud)

form_load事件代码包含:

Dim AnItemObj As New ItemInfo
Run Code Online (Sandbox Code Playgroud)

然后循环包括:

AnItemObj.ItemNo = AFile.RecordId
AnItemObj.ItemType = temp
AlList.Add(AnItemObj)
Run Code Online (Sandbox Code Playgroud)

所以我现在应该有这些对象的ArrayList,但是如果我尝试检索数据:

MsgBox(AlList(5).ItemNo)
Run Code Online (Sandbox Code Playgroud)

我总是得到列表中最后一个值的ItemNo.

我错过了什么?

Dar*_*rov 5

输入以下代码:

Dim AnItemObj As New ItemInfo
Run Code Online (Sandbox Code Playgroud)

循环内部,将AnItemObj添加到列表中.

将引用类型添加到列表时,只是添加引用,而不是值.

这意味着如果将相同实例的10倍添加到列表中,它将向列表添加相同引用的10倍.但是,如果之后您仍然有对此实例的引用,则可以修改其属性,并且由于列表中的所有10个条目都指向内存中的相同引用,因此将修改所有10个条目.