2013-07-05 6 views
0

Я пытаюсь заполнить список всеми идентификаторами элементов управления, содержащимися на странице aspx.Использование общих списков и ArrayList

Если я использую ArrayList для этой цели, этот список генерируется ОК. Пример функции: AddControls1.

Но если я использую общий список, я получил ошибку NullReferenceException. Пример функции: AddControls2.

Что я делаю неправильно при создании общего списка?

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

     ''success ! 
     Dim controlList1 As New ArrayList() 
     controlList1 = AddControls1(Page.Controls, controlList1) 

     For Each str As String In controlList1 
      Response.Write(str & "<br/>") 
     Next 

     ''FAIL 
     Dim controlList2 As New List(Of String) 
     controlList2 = Nothing 
     controlList2 = AddControls2(Page.Controls, controlList2) 
     For Each ctl As String In controlList2 
      Response.Write(ctl & "<br/>") 
     Next 
    End Sub 

    Private Function AddControls1(ByVal page As ControlCollection, ByVal controlList As ArrayList) As ArrayList 
     For Each c As Control In page 
      If c.ID IsNot Nothing Then 
       controlList.Add(c.ID) 
      End If 

      If c.HasControls() Then 
       AddControls1(c.Controls, controlList) 
      End If 
     Next 
     Return controlList 
    End Function 


    Private Function AddControls2(ByVal page As ControlCollection, ByVal controlList As List(Of String)) As List(Of String) 
     For Each c As Control In page 
      If c.ID IsNot Nothing Then 
       controlList.Add(c.ID) <-- here I got NullReferenceException error 
      End If 

      If c.HasControls() Then 
       AddControls2(c.Controls, controlList) 
      End If 
     Next 
     Return controlList 
    End Function 

ответ

5
controlList2 = Nothing 

Там ваш отказ. Вы конкретно устанавливаете нулевой список, а затем пытаетесь его использовать.

+0

Вы избили меня к нему. +1 – Renan

+0

Большое спасибо, я не мог его поймать. – Delmonte

0

Вы устанавливаете его в настоящее который не является нулевым

controlList2 = Ничто

Смежные вопросы