vb.net - 将对象添加到arraylist

Joe*_*Joe 3 vb.net arrays arraylist object

我在向arraylist添加对象时遇到了一些麻烦.

基本上该对象有两个属性(文件ID /名称),但我无法弄清楚如何分配这些属性.在运行时,它会在找不到对象的公共成员上出错.

Private QueueList As New ArrayList
Public Sub Queue(ByVal FileName As String, ByVal FileID As Integer)
    Dim QueueObj As New Object
    QueueObj.FileID = "Test 1"
    QueueObj.FileName = "Test 2"
    QueueList.Add(QueueObj)
End Sub
Run Code Online (Sandbox Code Playgroud)

我也想知道如何在arraylist上循环并访问每个记录上的两个属性.

谢谢!

Joe*_*orn 6

你不能只为此使用"对象".你需要建立自己的类:

Public Class File
    Public Property FileID As Integer
    Public Property FileName As String
    Public Sub New ()
    End Sub
    Public Sub New(ByVal FileName As String, ByVal FileID As Integer)
        Me.FileID = FileID
        Me.FileName = FileName
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

然后像这样构建你的队列:

Private QueueList As New ArrayList()
Public Sub Queue(ByVal FileName As String, ByVal FileID As Integer)
    QueueList.Add(New File(FileName, FileID))
End Sub
Public Sub Queue(ByVal FileObj As File)
    QueueList.Add(FileObj)
End Sub
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,使用泛型:

Public QueueList As New List(Of File)()
Public Sub Queue(ByVal FileName As String, ByVal FileID As Integer)
    QueueList.Add(New File(FileName, FileID))
End Sub
Public Sub Queue(ByVal FileObj As File)
    QueueList.Add(FileObj)
End Sub
Run Code Online (Sandbox Code Playgroud)

然后,循环遍历列表:

For Each item As File In QueueList
    'Console.WriteLine(item.FileID & vbTab & item.FileName)
Next item
Run Code Online (Sandbox Code Playgroud)