[英]All lists gets updated instead of just one element
在我的 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
屬性存儲相同的List<int>
實例。
當您設置此值時,可能值得只復制數組,請嘗試以下操作
global.Marks = new List<int>(marks);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.