C# 为什么我的原始列表在list.removeall()时获得与我的重复列表相同的值

C# 为什么我的原始列表在list.removeall()时获得与我的重复列表相同的值,c#,asp.net,list,lambda,C#,Asp.net,List,Lambda,逐行调试时,listCurrentPostsMarkers有2个值,然后在另一个列表中分配相同的值“listRemoveMarkers”,并在与listLocations列表进行比较后,从listRemoveMarkers中删除所有值。RemoveAll()工作正常,我在listRemoveMarkers中获得了所需的值,但现在我不知道为什么我的listCurrentPostsMarkers会受到影响?它获得与listRemoveMarkers相同的值。请帮助我理解这一点。提前谢谢 listRe

逐行调试时,listCurrentPostsMarkers有2个值,然后在另一个列表中分配相同的值“listRemoveMarkers”,并在与listLocations列表进行比较后,从listRemoveMarkers中删除所有值。RemoveAll()工作正常,我在listRemoveMarkers中获得了所需的值,但现在我不知道为什么我的listCurrentPostsMarkers会受到影响?它获得与listRemoveMarkers相同的值。请帮助我理解这一点。提前谢谢

listRemoveMarkers = listCurrentPostsMarkers;

listRemoveMarkers.RemoveAll(x =>
  listLocations.Exists(y => y.Latitude == x.Position.Latitude && 
                            y.Longitude == x.Position.Longitude));
不创建新列表,但使
listRemoveMarkers
引用点指向同一实例

您可以创建一个新列表来避免此问题:

listRemoveMarkers = listCurrentPostsMarkers;
不创建新列表,但使
listRemoveMarkers
引用点指向同一实例

您可以创建一个新列表来避免此问题:

listRemoveMarkers = listCurrentPostsMarkers;

您没有两个列表。您有两个变量都包含对同一列表的引用。您没有两个列表。您有两个变量都包含对同一列表的引用。谢谢。它起作用了。但是我做了“listRemoveMarkers=listCurrentPostsMarkers.ToList();”@fineline好的,
RemoveAll
是有点多余的,因为Framework3.5和LinqOk,那么做同样的事情合适的选项是什么呢?@fineline“合适”是个人意见的问题,但我会使用我发布的代码。它起作用了。但是我做了“listRemoveMarkers=listCurrentPostsMarkers.ToList();”@fineline好的,
RemoveAll
是有点多余的,因为Framework3.5和LinqOk,那么做同样的事情的合适选项是什么呢?@fineline“合适”是个人意见,但我会使用我发布的代码