2009-02-17 1 views
2

У меня есть небольшая программа, в которой я пытаюсь создать коллекции определенного объекта, который я создал (Job).Задача объекта VB.NET с коллекциями, массивами и списками

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

Например, у Job есть только одно свойство, имя. Если бы у меня были задания с именами 1,2,3,4 в коллекции, каждый раз, когда я добавляю отдельное задание, все предыдущие задания получают имя текущего задания. Таким образом, к тому времени, когда я добавлю работу 4, все задания имеют название 4.

Испытывал ли кто-нибудь этот вопрос раньше?

+0

Я уверен, что вы делаете что-то не так, как насчет какой-то части кода? –

ответ

2

Я подозреваю, что вы добавляете тот же экземпляр несколько раз - то есть (я буду использовать C# здесь ...)

Job job = new Job(); 
job.Name = "a"; 
list.Add(job); 
job.Name = "b"; 
list.Add(job); 

То, что вы сделали, добавить 2 ссылки на тот же объект в списке. Что вы должны были сделать:

Job job = new Job(); 
job.Name = "a"; 
list.Add(job); 
job = new Job(); /// <<===== here 
job.Name = "b"; 
list.Add(job); 

Это потому, что классы являются ссылочными типами; все, что вы добавляете, является ссылкой. Структуры являются типами значений и будут работать так, как вы ожидаете, , за исключением, что если вы не знаете, что вы делаете, структуры должны быть неизменными (т. Е. Никаких редактируемых свойств после создания).

+0

Я думал, что-то подобное происходит! Большое спасибо за ваш ответ, вы сэкономили мне много обострения. –

0

Звучит так, как если бы вы повторно использовали переменную объекта Job после добавления ее в список без воссоздания объекта Job. Все элементы в списке указывают на этот объект.

 Смежные вопросы

  • Нет связанных вопросов^_^