You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何listCurrentPostsMarkers会随listRemoveMarkers修改同步变化?

为什么两个List变量会同步变化?

这是C#里引用类型赋值的典型问题,我来给你掰扯清楚:

首先,List<T>是引用类型,和int、double这类值类型不一样。当你执行listRemoveMarkers = listCurrentPostsMarkers;的时候,你并没有复制整个列表的内容,只是把listRemoveMarkers这个变量指向了和listCurrentPostsMarkers完全相同的内存地址——简单说就是,两个变量现在共享同一个列表对象,就像两把钥匙开同一扇门。

所以当你调用listRemoveMarkers.RemoveAll(...)的时候,你其实是在修改那个共享的列表本身,而不是修改listRemoveMarkers指向的副本。这时候你再看listCurrentPostsMarkers,它指向的还是同一个列表,自然内容也跟着变了。

怎么解决?

如果你想让listRemoveMarkers是一个独立的副本,操作它不影响原列表,你需要创建一个新的List对象,把原列表的元素复制进去。比如:

// 方法1:用List的构造函数
listRemoveMarkers = new List<YourMarkerType>(listCurrentPostsMarkers);

// 方法2:用LINQ的ToList()(需要引用System.Linq)
listRemoveMarkers = listCurrentPostsMarkers.ToList();

这样两个变量就指向不同的列表对象了,修改其中一个不会影响另一个。

内容的提问来源于stack exchange,提问作者fine line

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:42:00