【发布时间】:2016-12-18 10:16:13
【问题描述】:
在我的 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]
【问题讨论】:
-
您应该添加构建该 Marks 列表元素的代码。似乎您已将相同的实例放在 globals 的所有元素中