空检查始终返回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
上添加menuData.Children =新名单(共MenuData)我得到一个参考到非共享成员需要对象referece – Phil 2010-06-24 08:07:40
@Phil - 无知道'menuData.Children'是如何实现的,我真的无法帮到更多。 – Oded 2010-06-24 08:12:19
感谢您的帮助。我已经得到它的工作 – Phil 2010-06-25 09:32:13