簡體   English   中英

所有列表都會更新,而不僅僅是一個元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM