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

向Dictionary中的静态List添加元素后,原静态List为何被修改?

为什么修改字典中的列表会影响原静态列表?

这是因为List是引用类型,在C#里,引用类型变量存储的不是实际的数据集合,而是指向内存中对象实例的地址。

当你执行BasCevresi.Add("mylabel", E_18_BasCevresi);的时候,并没有把E_18_BasCevresi列表的副本添加到字典里,而是把它的引用(也就是内存地址)存进了字典。这意味着字典里的"mylabel"对应的列表和静态变量E_18_BasCevresi指向的是同一个列表实例。

所以当你调用BasCevresi["mylabel"].Add(15);时,本质上是在操作那个唯一的列表实例——不管是通过字典的键访问,还是通过静态变量访问,看到的都是同一个列表,自然静态列表里也会出现15。


怎么解决这个问题?

如果你想让字典里的列表和原静态列表相互独立,在添加到字典的时候,需要创建一个原列表的副本,而不是直接传递引用。可以通过以下方式实现:

// 创建原列表的副本,再添加到字典
BasCevresi.Add("mylabel", new List<decimal>(E_18_BasCevresi));

这样字典里的"mylabel"对应的是一个全新的列表实例,它的初始元素和原静态列表完全一致,但后续对它的修改不会影响原静态列表,反之亦然。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:50:08