C# 将静态列表添加到字典会导致原始列表更新

C# 将静态列表添加到字典会导致原始列表更新,c#,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 }; 公共静态列表E_18_BasCevresi=新列表{45.6m、46.5m、47.4m、48.4m、49.4m、50.3m、51.2m}; 我把这个单子加到字典里 public Dictionary<string

我有静态十进制列表

public static List<decimal> E_18_BasCevresi = new List<decimal> { 45.6m, 46.5m, 47.4m, 48.4m, 49.4m, 50.3m, 51.2m };
公共静态列表E_18_BasCevresi=新列表{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
公共字典BasCevresi{get;set;}=newdictionary(); 添加(“mylabel”,E_18_BasCevresi); ... BasCevresi[“mylabel”]。添加(15)//虽然只是添加“mylabel”列表,而不是原始静态列表 它按预期工作,但是当我在其他任何地方使用static
E_18_BasCevresi
变量时,它包含值15,它不应该在我的原始静态列表中吗


为什么要将此值添加到原始列表

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

BasCevresi.Add("mylabel", new List<decimal>(E_18_BasCevresi));
BasCevresi.Add(“mylabel”,新列表(E_18_BasCevresi));