空检查始终返回null,如果删除则返回未将对象引用设置为对象的实例

时间:2010-06-24 07:56:36

标签: vb.net list function nullreferenceexception object-reference

我有一些代码通过GetChildren函数获取菜单的子项,该函数获取menuData列表:

Dim builtMenu As New List(Of MenuData)(_rawData.FindAll(Function(item) item.GroupingID = 0))

For Each menuData As MenuData In builtMenu
             If menuData.Children IsNot Nothing Then
            menuData.Children.AddRange(GetChildren(menuData))
             End If
        Next

如果我检查menudata.children是不是什么都没有,它总是没有,因为GetChildren函数还没有运行(提供子项,它确实存在)。如果我删除此检查并且只有这个代码:

Dim builtMenu As New List(Of MenuData)(_rawData.FindAll(Function(item) item.GroupingID = 0))

For Each menuData As MenuData In builtMenu  
            menuData.Children.AddRange(GetChildren(menuData)) 
        Next

然后我看到一个Object引用没有设置为menuData.Children.AddRange上的对象错误实例(GetChildren(menuData))

请告诉我如何解决这个问题? 非常感谢

1 个答案:

答案 0 :(得分:1)

您的menuData.Children从未被实例化,因此它是一个null(Nothing)引用。

您需要在使用它之前对其进行实例化:

Dim builtMenu As New List(Of MenuData)(_rawData.FindAll(Function(item) item.GroupingID = 0))
menuData.Children = New List(Of MenuData)

For Each menuData As MenuData In builtMenu  
    menuData.Children.AddRange(GetChildren(menuData)) 
Next