空检查始终返回null,如果去掉返回对象引用不设置到对象的实例

问题描述:

我有一些代码,获取子项通过的GetChildren功能的菜单这需要menuData的列表:空检查始终返回null,如果去掉返回对象引用不设置到对象的实例

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))的对象错误的实例

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

您的menuData.Children从未被实例化过,所以它是空的(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 
+0

上添加menuData.Children =新名单(共MenuData)我得到一个参考到非共享成员需要对象referece – Phil 2010-06-24 08:07:40

+0

@Phil - 无知道'menuData.Children'是如何实现的,我真的无法帮到更多。 – Oded 2010-06-24 08:12:19

+0

感谢您的帮助。我已经得到它的工作 – Phil 2010-06-25 09:32:13