c#所有列表都更新而不是只有一个元素

时间:2016-12-18 10:16:14

标签: c# .net list class core

在我的c#算法中,我使用的是更新特定索引的列表,但每当我更新一个索引时,所有列表都会更新:/请告诉我我做错了什么

internal class Global
    {
        public string ChromosomeName { get; set; }
        public int start { get; set; }
        public int end { get; set; }
        public int Cluster { get; set; }
        public List<int> Marks { get; set; }
        public List<int> Annotations { get; set; }
    }
var globals= new List<Global>();
var this_global = globals.Where(a => a.ChromosomeName == ChromosomeName).ToList();

((this_global[k]).Marks)[indexOfMark] += value;

这是这个特定部分的代码,例如我更新时(this_global [25] .Marks)[0] + = 37;它更新了整个列表,“this_global”的所有元素都得到了更新,每个元素都有一个“列表标记”列表,每个人的标记列表在索引0上获得值“37”。

我愿意的结果:

index 25 :

chromosomename ....
start....
end....
Cluster....
Anno....
Marks = [37,0,0] 

all other indexes apart from index 25 :

chromosomename ....
start....
end....
Cluster....
Anno....
Marks = [0,0,0] 

实际结果:

index 25 :

chromosomename ....
start....
end....
Cluster....
Anno....
Marks = [37,0,0] 

all other indexes apart from index 25 :

chromosomename ....
start....
end....
Cluster....
Anno....
Marks = [37,0,0] 

提前致谢

1 个答案:

答案 0 :(得分:1)

您似乎正在使用List<int>属性存储Marks的同一个实例。

设置此值时可能需要复制数组,请尝试以下

global.Marks = new List<int>(marks);