代码之家  ›  专栏  ›  技术社区  ›  TyForHelpDude

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

c#
  •  1
  • TyForHelpDude  · 技术社区  · 5 年前

    我有静态十进制列表。

    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 回复  |  直到 5 年前
        1
  •  2
  •   user3161402    5 年前

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

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