这是我第一次使用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添加文本而不会出现此错误?
答案 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