C# 如何创建IEnumerable的浅拷贝<;T>;?

C# 如何创建IEnumerable的浅拷贝<;T>;?,c#,linq,shallow-copy,C#,Linq,Shallow Copy,我有一个IEnumerable对象,如: IEnumerable<string> listSelectedItems; IEnumerable listSelectedItems; 它包含三个项目。现在,我创建了一个新对象,并希望从listSelectedItems获取所有项目,因此我编写了以下代码: IEnumerable<string> newList = listSelectedItems; IEnumerable newList=listSelected

我有一个IEnumerable对象,如:

IEnumerable<string> listSelectedItems; 
IEnumerable listSelectedItems;
它包含三个项目。现在,我创建了一个新对象,并希望从listSelectedItems获取所有项目,因此我编写了以下代码:

 IEnumerable<string> newList = listSelectedItems;
IEnumerable newList=listSelectedItems;

但是现在,当我修改newList时,listSelectedItems也会被修改。如何在没有参考的情况下更改或创建一个新的IEnumerable。

您在找这个吗

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

IEnumerable是一个接口,因此您不能实例化它,您需要它的实现,例如
List

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

在您的案例中,设置
newList=listSelectedItems
意味着
newList
将只是对
listSelectedItems
的引用,因此如果基础对象发生更改,
newList
将引用更改后的对象。

我没有尝试过这个,但我认为这也会起作用,答案是X。