@i__egor

Почему список не отчищается?

Есть функция, передаем туда список MyFunc( list ) list это List<int>
В этой функции присваиваем локальной переменной список list_1 = list;
Далее в этой же функции делаем:
list_1.Clear()
Все хорошо, и list и list_1 после отчистки имеют количество элементов 0, не удивительно они же ссылаются на один список.
повторим такое но напишем это внутри делегата:
btn.onClick.AddListener(()=>{
list_1.Clear();
})

Вот теперь после очистки list_1 узнаем количество элементов. В list_1 их 0, а в list как было до очистки так и осталось, что не так? почему после выполнении делегата не затронулся список list ?
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Alex_At_Net
Обращайтесь, помогу - https://t.me/codecraft_phd
потому что list и list_1 указывают на разные списки.

Можете проверить, добавив точку остановки на преверяющий if в делегате:

btn.onClick.AddListener(()=>{
  if (list == list_1) { // breakpoint
    // log "=="
  } else {
     // log "!="
  }
  list_1.Clear();
})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы