Проверка на ноль всегда возвращает ноль, если удалено, возвращается ссылка на объект, не установленная для экземпляра объекта - PullRequest
0 голосов
/ 24 июня 2010

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

1 голос
/ 24 июня 2010

Ваш 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...