vb.net-将对象添加到arraylist
向arraylist添加对象时遇到问题 基本上,对象有两个属性(文件id/名称),但我不知道如何分配这些属性。在运行时,它会出错,找不到对象上的公共成员vb.net-将对象添加到arraylist,vb.net,arrays,object,arraylist,Vb.net,Arrays,Object,Arraylist,向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" Queu
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
我还想知道如何在arraylist上执行循环并访问每条记录上的两个属性
谢谢 您需要切换到一个对象来保存文件信息,并删除强类型集合的ArrayList
public class QueueFile
public Property FileID as integer
public property FileName as string
end class
你不能只是用“对象”来做这个。您需要构建自己的类:
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
然后按如下方式构建队列:
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
或者,更好的方法是使用泛型:
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
然后,要在列表上循环:
For Each item As File In QueueList
'Console.WriteLine(item.FileID & vbTab & item.FileName)
Next item
如果您只有两个值,您可能会发现使用泛型字典比使用ArrayList(需要装箱和取消装箱类型)或List(Of T)更好,后者保留了类型安全性
Private QueueList As New Dictionary(of Integer, String)
Public Sub Queue(ByVal FileName As String, ByVal FileID As Integer)
QueueList.Add(FileID, FileName)
End Sub
如果你真的想要一个你的方法名称指示的队列,考虑使用通用队列。此外,如果您只需要一个键/值对,则不需要创建自己的类。您可以使用通用的KeyValuePair(T,S):
要取出项目,请使用QueueItems.Dequeue.为什么要使用arraylist??使用列表进行此工作。在VB10中关闭选项Strict后,您可以只使用Object并使用.NET4中添加的动态功能。
Private QueueList As New Dictionary(of Integer, String)
Public Sub Queue(ByVal FileName As String, ByVal FileID As Integer)
QueueList.Add(FileID, FileName)
End Sub
Private QueueItems As New Queue(Of KeyValuePair(Of Integer, String))
Public Sub Queue(ByVal FileName As String, ByVal FileID As Integer)
QueueItems.Enqueue(New KeyValuePair(Of Integer, String)(FileID, FileName))
End Sub