2017-05-08 45 views
-2

之前添加的元素!在C#中向List添加新元素正在改變在

我有一個double []數組,稱爲weights_c1,它在for的每次迭代中分配不同的值。 我還有一個名爲wc1的列表,用於在每個循環中存儲矢量weights_c1。 所以,我做的:

wc1.Add(weights_c1); 

的問題是,這樣一來,程序改變元素的值添加到列表中。

例: 在第一次迭代我有

wc1[0] = {1.0, 3.4, 2.2} 

當第二次迭代的推移與wc1[1] = {2.0, 4.5, 1.0},WC1的元素[0]也呈現相同的值{2.0, 4.5, 1.0},和後和直到發生這種情況循環的結尾。

程序正在「鏈接」weights_c1的當前值並自動更新之前添加到列表中的值。

我該如何解決這個問題?

+4

這將真正有幫助,如果你想顯示的代碼,但我99.9%肯定你只是將該引用添加到同一個數組中多次。請記住,數組是引用類型 - 「列表」包含數組對象的*引用。如果列表多次包含相同的參考,那麼是的,你會看到相同的元素... –

+0

你可以請你發佈你的代碼? – sachin

+0

謝謝大家! 從dasblinkenlight的建議工作。 –

回答

1

您看到此問題的原因是您要將相同的數組對象weights_c1添加到列表中。由於數組是引用類型,因此List<double[]>存儲對該數組的引用,而不是其副本。在將數組插入列表後,對數組進行的任何修改在當前存儲在列表中的數組中都是「可見的」,因爲它是相同的數組對象。

您可以通過插入您的數組的副本到列表中,這樣解決這個問題:

double[] copy = new double[weights_c1.Length]; 
weights_c1.CopyTo(copy, 0); 
wc1.Add(copy); 
+1

它的工作! 謝謝! –