2015-10-19 36 views
1

我需要更新VS2013的C#列表中每個元素的值。更新VS2013 C#列表中每個元素的值

代碼:

var wl = myList.ToArray(); 
List<myElement> tl = new List<myElement>(); 
tl = givenList; // I need to update values in element in this list 
for(int p =0; p < wl.Count(); ++p) 
{ 
    decimal? fv = (wl[p].value * 10)/((decimal?)a_constant); 
    tl.ToArray()[p].value = fv; // this cannot update the value 
} 
myList = tl; 

但是,在tl.ToArray()[p].value = fv;不更新的價值。

任何幫助,將不勝感激。

回答

2

您正在創建大量的變量,這些變量實際上並沒有太多的功能,而且很難閱讀。此外,你不需要不斷的打電話ToArray嘗試是這樣的:

for(int p = 0; p < myList.Count; ++p) 
{ 
    decimal? fv = (myList[p].value * 10)/((decimal?)a_constant); 
    givenList[p].value = fv; 
} 
+1

您可能希望在'.value'之前首先檢查myList [p]'爲'null' ...因爲如果它是'null',您將點擊錯誤 – Nic

+0

@Nic我同意,但不知道這種方法的具體用法,這將是很難寫出一個錯誤的情況下,客觀上比簡單地擊中空參考例外:) – Rob

+0

如果我記得正確,你可以刪除'.Value'的代碼仍然會工作,你不會遇到空引用異常:) – Nic

0

tl.ToArray()創建每個元素的副本。我不確定代碼中myElement的類型,但是如果它是struct或任何其他value type這將解釋爲什麼您的集合未被修改。您的代碼會更新您的元素的副本,而不是元素本身

相關問題