在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;不更新值。

在VS2013 c#中更新列表中每个元素的值

您创建了大量的变量,这些变量实际上没有什么作用,而且很难阅读。同样,你不需要一直调用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,这将解释为什么您的集合没有被修改。您的代码将更新元素的副本,而不是元素本身