【问题标题】:Can we modify properties of object which is in Queue - C#?我们可以修改 Queue - C# 中对象的属性吗?
【发布时间】:2009-08-04 13:23:36
【问题描述】:

我使用过 System.Collections.Queue 及其对象 form_elements_queue

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

我正在修改 queue_element,如下所示,

queue_element.Children--;

RecordQueue 是我在 form_elements_queue 中排队的自定义类型。

但它没有引用原始队列。 如何将 queue_element 引用到队列中的原始对象。

【问题讨论】:

    标签: c# collections queue pass-by-reference


    【解决方案1】:

    RecordQueue 是结构体还是类?如果是类,应该没问题。

    如何检查原始队列是否被修改?

    【讨论】:

    • 你是对的。如果RecordQueueclass,上面的代码将对队列中的对象进行更改。如果是struct,上面的代码将对队列中的值的副本进行更改。
    • 是的,你在这里,它是一个结构:(我必须使用类!对吗?
    • @Japan:是的,使用课程将为您解决这个特殊问题。无论如何,您几乎应该总是使用类 - 创建自己的结构,IMO 很少是一个好主意。
    • 但是谁能告诉我应该使用 struct 而不是 class 的最佳方案是什么?
    • msdn.microsoft.com/en-us/library/ms229017.aspx - 但基本上默认使用类,IMO。