Почему мой список (Of String), созданный в цикле for, не пуст на каждой итерации?

У меня есть «главный» список (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 и так далее. Значения второй итерации добавляются к tempList предыдущей итерации, которая затем используется для создания экземпляра tempClassA, и я не знаю почему.

Я дважды проверил, правильно ли рассчитываются startIndex и endIndex, и это так. На 2-й итерации startIndex = 38 и endIndex = 76

Любое понимание очень ценится.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
64
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Может ты можешь попробовать что-то вроде этого

    Dim tempList = New List(Of String) From masterList.GetRange(startIndex, endIndex)

Именно то, что я собирался опубликовать. Думаю, это может быть то, что вы ищете.

laancelot 30.10.2018 21:40

Спасибо за сообщение, скоро попробую.

Jonas Zebari 30.10.2018 21:59
Ответ принят как подходящий

EndIndex неверен, потому что параметр запрашивает «количество», а не конечный индекс:

От List.GetRange

public System.Collections.Generic.List GetRange (int index, int count);

Попробуйте вот так:

Dim tempList as List(Of String) = masterList.GetRange(startIndex, sublistLength)

Ого, спасибо. Думаю, я просто предположил, что это конечный индекс!

Jonas Zebari 31.10.2018 05:04

Другие вопросы по теме