向字典添加静态列表会导致原始列表更新

时间:2019-02-09 10:01:07

标签: c#

我有静态的十进制列表。

public static List<decimal> E_18_BasCevresi = new List<decimal> { 45.6m, 46.5m, 47.4m, 48.4m, 49.4m, 50.3m, 51.2m };

我将此列表添加到字典中

public Dictionary<string, List<decimal>> BasCevresi { get; set; } = new Dictionary<string, List<decimal>>();

BasCevresi.Add("mylabel", E_18_BasCevresi);
...
BasCevresi["mylabel"].Add(15);//though just adding the list of "mylabel" not origin static list

它可以按预期工作,但是当我在其他任何地方使用静态E_18_BasCevresi变量时,它包含的值15是否不应该位于我的原始静态列表中?

为什么将此值添加到来源列表?

1 个答案:

答案 0 :(得分:2)

列表是一个参考值,当您将列表添加到字典中时,对列表的任何更改都会反映在原始列表中,这就是为什么静态E_18_BasCevresi列表包含值15的原因。 为了解决这个问题,您需要向字典中插入一个列表副本,如下所示:

BasCevresi.Add("mylabel", new List<decimal>(E_18_BasCevresi));