我正在尝试使用以下内容添加到ArrayList。
Dim lines() As String = IO.File.ReadAllLines("C:\xTools\messages.txt")
For Each line As String In lines
Dim parts As String() = line.Split(New String() {":"}, StringSplitOptions.None)
Dim message As String = String.Join(" ", parts)
If Not message = Nothing Then
Messages.Add(message)
End If
Next
我得到的是Messages.Add(message)
上的NullReferenceExceptions。请指教。
答案 0 :(得分:2)
每当你在特定行中得到NullReferenceException
时,检查与你的代码流有关的行,即你通常应该知道哪个变量或表达式可以得到Nothing
的值,所以开始与那些第一。使用鼠标悬停或您的即时窗口。
在您的示例中,邮件不能是Nothing
,因为之前已经检查过该邮件。另请考虑将其更改为Is Nothing
,而不是= Nothing
。如上所述,它也会对String.Empty
做出反应,这会产生误导。如果您确实需要此行为,请使用String.IsNullOrEmpty
。
所以唯一可能是Nothing
的是Messages
,它可能从未被初始化:
Messages = New ArrayList
或内联声明:
Dim Messages As New ArrayList
如果您知道自己的Messages
将始终包含字符串列表,请考虑更改为Generic.List(Of String)
,您应该获得现有的+类型安全性。如果使用框架1.1,您只能使用ArrayList
类,并且坦率地说,现在所有项目都应该至少为2.0,所以如果还没有这样做,请考虑升级。
答案 1 :(得分:0)
您得到NullReferenceExceptions
,因为Messages
实际上是null
。
确保使用某些内容初始化Messages
,例如ArrayList
。