Member 12971184 Ответов: 2

Экземпляр в списке изменяется новым экземпляром


Всем привет ! У меня вроде как нет идей, так что мне нужна ваша помощь в этом деле.
трудно объяснить ситуацию, но я постараюсь сделать все, что в моих силах.

Я создал программу, которая создает автомобили некоторых типов и добавляет их в гараж.
Я представляю гараж со списком. Я помещаю значения в один экземпляр и добавляю его в список, а затем понимаю, что когда я начинаю добавлять значения в новый экземпляр, он изменяет значения экземпляра внутри списка.

Я в замешательстве, пожалуйста, помогите.

Что я уже пробовал:

я действительно не знаю, что попробовать, я действительно не знаю, как это произошло

Jon McKee

Помимо предложения Питера Леоу, которое, вероятно, является проблемой, с которой вы столкнулись, не могли бы вы опубликовать соответствующий код? Не видя кода, мы не можем указать вам точную область, в которой код неправильно изменяет указатель.

2 Ответов

Рейтинг:
0

Peter Leow

Это правильно, элементы в списке являются просто ссылками (указателями) на фактические экземпляры автомобиля, это называется Передача Параметров Ссылочного Типа (Руководство По Программированию На C# )[^Обычно мы храним настоящий артефакт (по стоимости)в шкафчике. Однако для передачи по ссылке вы храните информацию о фактическом местоположении (адресе) этой статьи на листе бумаги в этом шкафчике, этот шкафчик является так называемым указателем в программировании на языке Си. Чтобы лучше понять концепцию, прочтите указатель[^].


Рейтинг:
0

Patrice T

Цитата:
Я представляю гараж со списком. Я помещаю значения в один экземпляр и добавляю его в список, а затем понимаю, что когда я начинаю добавлять значения в новый экземпляр, он изменяет значения экземпляра внутри списка.

Даже без кода можно сказать, что то, что вы считаете 2 экземплярами 2 разных вещей, на самом деле является 2 указателями на один и тот же экземпляр, таким образом, проблема.

Наряду с более глубоким изучением методов программирования, вы должны изучить отладчик.

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Он позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.