列出<object>对象引用</object>

时间:2012-07-05 08:01:22

标签: c# object generic-list

我有List<QueueItem> QueueItemList个对象列表。我按对象属性Status过滤对象列表,并将过滤后的列表分配给processingList。如果我将在QueueItemList列表中更改对象Status属性,它是否也会在processingList中更改?

        public List<QueueItem> GetItems()
        {
            lock (Locker)
            {
                return QueueItemList.ToList();
            }
        }

var processingList = GetItems.Where(p => p.Status== QueueItemStatus.Processing).ToList();

4 个答案:

答案 0 :(得分:2)

  

如果我将更改QueueItemList列表中的对象Status属性   是否会在processingList中更改?

是的,它会,除非QueueItem是值类型(struct)。如果它是class,则它是引用类型,这意味着processingListQueueItemList都指向其元素的完全相同的内存位置。那些变量只是指针。

答案 1 :(得分:2)

是的,因为您正在与相同的基础对象共享引用假设当然列表中的项目是{{1 (或其他引用类型)而不是class(值类型)。

请注意,您有两个独立的引用列表,但这些列表中的引用指向同一组对象。

如果您在一个列表中重新分配整个实例(如在struct中),则重新分配将不会出现在另一个列表中,但我无法设想这样的用例,所以它不应该'是一个问题。

答案 2 :(得分:0)

是的,它也会在processingList中改变。

答案 3 :(得分:0)

是的,您将对同一个对象进行 N 次引用。换句话说:你将改变同一个对象。