VB.net - 添加到ArrayList

时间:2014-02-12 12:12:55

标签: arrays vb.net arraylist

这是我第一次使用ArrayList。我试图添加到BarcodeArray作为arraylist )并且执行失败并显示错误消息:

  

对象引用未设置为对象的实例。

我的代码如下所示:

'Populate the arrays        
BarcodeArray.Add(txt_Barcode.Text)
CategoryArray.Add(cmb_Categories.Text)
TitleArray.Add(txt_Title.Text)
DescriptionArray.Add(txt_Description.Text)
QuantityArray.Add(txt_Quantity.Text)
RRPArray.Add(txt_RRP.Text)
CostArray.Add(txt_Cost.Text)

执行第2行时会出现此消息。如何从文本框中向ArrayList添加文本而不会出现此错误?

3 个答案:

答案 0 :(得分:2)

在.NET中,您需要实例化对象,然后才能调用它们上的方法。例如:

Dim a As ArrayList
a.Add(...)           ' Error: object reference `a` has not been set

解决方案是使用 new ArrayList:

初始化变量
Dim a As ArrayList

a = New ArrayList()
a.Add(...)           

或者,或者:

Dim a As New ArrayList()
a.Add(...)           

BTW,ArrayList是一个旧类,主要用于向后兼容。当您开始新项目时,请使用generic List class代替:

Dim a As New List(Of String)()
a.Add(...)           

答案 1 :(得分:2)

您遇到的这个问题是您在使用ArrayLists之前没有实例化它们。您需要执行以下操作才能使代码正常工作:

Dim barcodeArray as New ArrayList()
barcodeArray.Add(txt_Barcode.Text)
... etc ...

但在你的情况下,我想我会创建一个新类:

Public Class Product
    Public Property Barcode as String
    Public Property Category as String
    Public Property Title as String
    ... etc ...
End Class

然后我会在这样的代码中使用它:

Dim productList as New List(Of Product)()
productList.Add(new Product() With {
    .Barcode = txt_Barcode.Text,
    .Category = cmb_Categories.Text,
    .Title = txt_Title.Text,
    ... etc ...
})

这将允许您使用单个Product对象而不是单独的ArrayList个对象,这将是一个维护噩梦。

答案 2 :(得分:0)

在使用之前,您需要实例化第2行中的问题是当时为null VB.NET 中为Nothing),因为它未创建

由于您要添加到列表中的所有值都具有相同类型 String,我建议您使用List(Of String)代替ArrayList

尝试以下方法:

Dim BarcodeArray as List(Of String) = New List(Of String)( { txt_Barcode.Text } )
Dim CategoryArray as List(Of String) = New List(Of String)( { cmb_Categories.Text } )
' ...
' Same for the other Lists you will need to use