2009-08-04 4 views
2

Я использовал System.Collections.Queue и его объект form_elements_queueМожем ли мы изменить свойства объекта, находящегося в очереди - C#?

if (form_elements_queue.Count > 0) 
     queue_element = (RecordQueue)form_elements_queue.Peek(); 

Я модифицирования queue_element, как показано ниже,

queue_element.Children--; 

RecordQueue мой пользовательский тип, который я Ставить в form_elements_queue.

, но не ссылается на первоначальную очередь. Как я могу ссылаться на queue_element на исходный объект, который находится в очереди.

ответ

5

RecordQueue a struct or a class? Если это класс, все должно быть хорошо.

Как вы проверяете, была ли изменена первоначальная очередь?

+1

Вы правы. Если 'RecordQueue' является' классом', код выше внесет изменения в объект, находящийся внутри очереди. Если это 'struct', код выше внесет изменения в копию значения, которое находится в очереди. – jpbochi

+0

да, вы там, его структура :(Я должен использовать класс! Правильно? – shahjapan

+0

@Japan: Да, использование класса решит эту конкретную проблему для вас. В любом случае вы должны почти всегда использовать классы - это очень редко хорошая идея создайте свою собственную структуру, IMO. –