Странное поведение list.clear () / list.add () в c#C#

Место общения программистов C#
Ответить
Anonymous
 Странное поведение list.clear () / list.add () в c#

Сообщение Anonymous »

У меня есть код, как это: < /p>

Код: Выделить всё

List subList = new();
List mainList = new();

for (int i = 0; i < 10; i++)
{
subList.Add("Something");

if ((i + 1) % 2 == 0)
{
mainList.Add(subList);
subList.Clear();
}
}
< /code>
Если после этого я проверю < /p>
Debug.WriteLine($"mainList: {mainList.Count}"); // Will display 5
Debug.WriteLine($"added subList: {mainList[0].Count}"); // Will display 0, why??
< /code>
Попытка получить доступ к основному списку [0] [0] будет выбросить исключение: < /p>
Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
Если я заменяю sublist.clear () с помощью sublist = new () он работает правильно.
Что не так с list.clear ()? Похоже, он очищает список до того, как список будет добавлен в другой список. Почему это происходит и как использовать list.clear () правильно здесь? Или проблема в списке.add ()? Я не нашел ничего конкретного в Learn.microsoft.com

Подробнее здесь: https://stackoverflow.com/questions/796 ... in-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»