在VS2013 c#中更新列表中每个元素的值
本文关键字:元素 列表 VS2013 更新 | 更新日期: 2023-09-27 18:18:12
我需要在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;
不更新值。
您创建了大量的变量,这些变量实际上没有什么作用,而且很难阅读。同样,你不需要一直调用ToArray
,试试这样做:
for(int p = 0; p < myList.Count; ++p)
{
decimal? fv = (myList[p].value * 10) / ((decimal?)a_constant);
givenList[p].value = fv;
}
tl.ToArray()
创建每个元素的副本。我不确定代码中myElement
的类型是什么,但如果它是struct
或任何其他value type
,这将解释为什么您的集合没有被修改。您的代码将更新元素的副本,而不是元素本身