1

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

我得到的只是 NullReferenceExceptions on Messages.Add(message)。请指教。

4

2 回答 2

2

每当您进入NullReferenceException特定行时,请检查与您的代码流相关的行,即您通常应该知道哪些变量或表达式可以获得 的值Nothing,因此首先从那些开始。使用鼠标悬停或您的即时窗口。

在您的示例中, message 不能是Nothing,因为之前已对此进行了检查。也请考虑将其更改为Is Nothing,而不是= Nothing. 如所写,它也会对 做出反应String.Empty,这是误导性的。如果您真的想要这种行为,请使用String.IsNullOrEmpty.

所以唯一可以NothingMessages,它可能从未初始化过:

Messages = New ArrayList

或内联声明:

Dim Messages As New ArrayList

如果您知道您Messages将始终包含一个字符串列表,请考虑更改为Generic.List(Of String),您应该得到您现在所拥有的 + 类型安全性。如果使用框架 1.1,你只会被困在ArrayList课堂上,坦率地说,现在你所有的项目都应该至少是 2.0,所以如果你还没有这样做,请考虑升级。

于 2013-09-15T15:06:01.250 回答
0

你得到是NullReferenceExceptions因为Messages事实上null

确保它Messages是用某些东西初始化的,例如ArrayList.

于 2013-09-15T14:16:32.420 回答