Это работает:
Dim rooms As New List(Of roomList)
While dr.Read
rooms.Add(New roomList() With {.eID = dr.Item("mId"), .eName = dr.Item("roomName"), .eEmail = dr.Item("roomEmail")})
MsgBox(rooms.Count)
End While
MsgBox(rooms.Count)
Устранить создание новой комнаты:
Dim rooms As New List(Of roomList)()
MsgBox(rooms.Count)
Это выше создает новый объект списка, который фактически изначально пуст.
В соответствии с вашими правками
Вы упомянули
РЕДАКТИРОВАТЬ: два фрагмента кода, в котором я пытаюсь читать / писать список, находятся всобственные Sub, я должен вместо этого объявить глобальную переменную?
Поскольку они находятся в 2 разных подпрограммах, один экземпляр потерян, следовательно, счетчик теперь равен 0, потому что вы создали новый экземпляр.То, что вы хотите сделать, это взять начальный список и передать его подпрограмме / функции, о которой идет речь.Если вы планируете изменить этот список, передайте его ByRef
, в противном случае передайте его ByVal
.Что-то на этот счет:
'code...
PrintListCount(rooms)
'other code...
protected Sub PrintListCount(ByVal rooms as List(Of roomList))
MsgBox(rooms.Count)
end sub
Этот пример немного страшен, так как вам действительно не нужно передавать весь список по значению, чтобы напечатать счетчик списка ... но я просто использую его дляпокажет вам, как пройти список номеров.
За ваше второе редактирование
Ваша функция getRoomList()
не возвращает список.Как вы ожидаете, чтобы собрать счет без надлежащего возвращенного объекта?Измените саб на функцию:
Private Function getRoomList() As List(Of roomList)
Dim rooms As New List(Of roomList)
Try ' SQL Query stuff goes here
dr = sqlCmd.ExecuteReader
While dr.Read
rooms.Add(New roomList()
With {.eID = dr.Item("mId"), .eName = dr.Item("roomName"), .eEmail = dr.Item("roomEmail")})
'MsgBox(rooms.Count)
End While
End If
Catch ex As Exception
End Try
return rooms
End Function
И в вашем событии загрузки:
Dim rooms as List(Of roomList)
rooms = getRoomList();
Теперь, когда у вас есть подходящий объект комнаты, вы можете теперь сказать:
MsgBox(rooms.Count)
Вам нужно будет прочитать о проходящих объектах, о том, как работают функции, и переменной области видимости.Без этого знания ты усложняешь себе жизнь.