如何创建IEnumerable <t>的浅表副本?</t>

时间:2013-10-19 07:09:30

标签: c# linq shallow-copy

我有一个IEnumerable对象:

IEnumerable<string> listSelectedItems; 

其中包含三项。现在我创建了一个新对象,并希望从listSelectedItems获取所有项目,所以我写了这段代码:

 IEnumerable<string> newList = listSelectedItems;

但是现在当我改变newList时,listSelectedItems也会被改变。如何在不参考的情况下实现更改或创建新的IEnumerable。

2 个答案:

答案 0 :(得分:10)

你在找这个吗?

IEnumerable<string> newList = listSelectedItems.ToList();

答案 1 :(得分:4)

IEnumerable是一个接口,所以你不能实例化它,你需要它的实现,例如List

IEnumerable<string> newList = new List<string>(listSelectedItems);

在您设置的情况下newList = listSelectedItems表示newList只是对listSelectedItems的引用,因此如果更改了基础对象,newList将引用更改的对象。