0

我有一些代码通过 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

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

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

4

1 回答 1

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
于 2010-06-24T07:59:46.970 回答