2016-01-29 46 views
0

我有一個對象數組和一個特定列表。這個對象數組中 每個對象應分別於這個字符串的工作,並返回一個數字:更改通用列表中的一個項目將更改具有相同值的所有其他值

{ 
    var nT = 0; 
    var nF = 0; 

    #region Irisdataset 

    Irisdataset[] dataobj = new Irisdataset[150]; 

    #endregion 

    foreach (var data in dataobj) 
    { 
    bool ChroValue = false; 

    List<List<string>> localchro = new List<List<string>>(chromosome); 
    ChroValue = ExpValueForEachData(data, localchro); 
    if (ChroValue == true) 
     nT++; 
    else 
    { 
     nF++; 
    } 
    } 
    return 1.1 
} 

我創建染色體的localcopy,然後將它傳遞給函數,但沒有奏效。而且,一次執行「ExpValueForEachData」後,染色體發生了變化。 我該怎麼辦?

回答

1

在這種情況下,您正在做所謂的淺拷貝,您想要進行深層複製。

嘗試以下操作:

List<List<string>> localchro = new List<List<string>>(); 

foreach(List<string> list in chromosome) 
{ 
    // chromosome is holding references to the address of a List<string> 
    // You want to create a new copy of the data within the reference 
    // This is a deep copy 
    localchro.Add(new List<string>(list)); 
} 
相關問題