7

假设我有一个名为 PeopleCollection 的List<Person>变量

在下面的语句中, newPeople 会得到 PeopleCollection 的深层副本吗?

var newPeople=(from p in PeopleCollection select p).ToList();

对 newPeople 的任何操作会影响 PeopleCollection 吗?

4

2 回答 2

10

这将创建一个新列表并将该列表中的所有项目添加到新列表中。它将执行所有这些项目的“浅”副本,因此如果这些项目是可变引用类型,则它们的变异将反映在任一集合中。

这意味着对任一列表本身的更改(添加项目、删除项目等)将不会反映在另一个列表中,即使列表中任何项目的突变将从任一集合中反映出来。

(总之,不,它不会。)

于 2013-04-22T19:04:50.477 回答
3

它返回一个List引用由 . 返回的相同对象的Enumerable

于 2013-04-22T19:06:11.397 回答