在我的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]
提前致谢
答案 0 :(得分:1)
您似乎正在使用List<int>
属性存储Marks
的同一个实例。
设置此值时可能需要复制数组,请尝试以下
global.Marks = new List<int>(marks);