添加到ArrayList时出现NullReferenceException

时间:2013-09-15 14:12:23

标签: vb.net arraylist nullreferenceexception

我正在尝试使用以下内容添加到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。请指教。

2 个答案:

答案 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

的新实例