У меня есть «главный» список (Of String), который содержит несколько сотен строк, которые необходимо разделить на n номеров меньшего List (Of String), причем каждый меньший список имеет одинаковую длину и затем передается в конструктор для объекта, который добавляется в собственный список. Для этого мой код выглядит так:
Private Function GetListOfClassA() as List(Of ClassA)
Dim listToReturn As New List(Of ClassA)
Dim sublistLength As Integer = 38
Dim masterList as List(Of String) = StaticClass.GetCombinedClassAInfo()
For index As Integer = 0 To (masterList.Count / sublistLength) - 1 'This will always divide evenly
Dim startIndex As Integer = index * sublistLength 'I know there's a bit of miscalculation here but at this point I think it's beside point
Dim endIndex As Integer = startIndex + sublistLength
Dim tempList as List(Of String) = masterList.GetRange(startIndex, endIndex)
Dim tempClassA As New ClassA(tempList)
listToReturn.Add(tempClassA)
Next
Return listToReturn
End Function
Я ожидаю, что поведение tempList
будет абсолютно новым на каждой итерации цикла, так что каждый созданный tempList
будет иметь длину 38
. Однако, когда я запускаю этот код, tempList
равен 38
, затем 76
и так далее. Значения 2-й итерации добавляются к tempList
предыдущей итерации, которая затем используется для создания экземпляра tempClassA
, и я понятия не имею, почему.
Я дважды проверил, что startIndex
и endIndex
рассчитываются правильно, и это так. На 2-й итерации startIndex = 38
и endIndex = 76
Любое понимание очень ценится.