Проверка на ноль всегда возвращает ноль, если удалено, возвращается ссылка на объект, не установленная для экземпляра объекта

У меня есть некоторый код, который получает дочерние элементы для меню через функцию 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
Другие вопросы по тегам