Я пытаюсь добавить объекты в список для доступа к другим местам в программе.Однако всякий раз, когда я добавляю новый объект, все предыдущие объекты затем превращаются в копии самого последнего добавленного объекта.
Сначала я пытался использовать цикл для циклического перемещения по объектам, но обнаружил, что при добавлении нового объекта он перезаписываетсявсе остальные объекты, которые уже были в списке.Я немного огляделся и думаю, что это как-то связано со ссылками на объекты в памяти.Однако я не знаю, как исправить ссылки.
List <ObjectTester> holder = new List<ObjectTester>();
//for(int i =0; i<5; i++)
//{
// ObjectTester objec = new ObjectTester(i.ToString());
// holder.Add(objec);
// foreach (ObjectTester o in holder)
// {
// Console.WriteLine(o.ToString());
// }
//}
holder.Add(new ObjectTester("01"));
Console.WriteLine(holder[0]);
holder.Add(new ObjectTester("02"));
Console.WriteLine(holder[0]);
Console.WriteLine(holder[1]);
public class ObjectTester
{
private static string id;
public ObjectTester(string _id)
{
id = _id;
}
}
При выполнении закомментированной части и отображении с циклом я ожидаю увидеть 0 1 2 3 4
Однако он печатается как 4 4 4 4 4
, поскольку все предыдущие значения изменены.Чтобы проверить это, я распечатал значения после добавления их в список и вывел: 0 1 1 2 2 2 3 3 3 3 4 4 4 4 4
, показывая, что оно переопределяется при каждом новом добавлении в список.