Проверка на ноль всегда возвращает ноль, если удалено, возвращается ссылка на объект, не установленная для экземпляра объекта
У меня есть некоторый код, который получает дочерние элементы для меню через функцию 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)).
Подскажите пожалуйста, как мне обойти эту проблему? большое спасибо
1 ответ
Решение
Ваш 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