【发布时间】:2015-10-17 10:26:02
【问题描述】:
我有一个用于保存值的对象的全局列表,值和 ID 将被解析到 ObjectManager 函数中,ID 只能是列表中所述的内容。我希望函数更新与Id 对应的值。
最初我尝试使用未更新列表中对象的 foreach 循环。使用下面的代码确实会更新列表中的对象,但它只检查解析的 id,我现在正在尝试使用 switch 语句,早期。
实现我想要做的最好的方法是什么?
示例代码:
public List<Object> obj = new List<Object>
{
new Object { id = 4, val = 20 },
new Object { id = 1, val = 34 },
new Object { id = 16, val = 27 },
new Object { id = 9, val = 36 }
};
public void ObjectManager(List<Object> myobj, int id, int val)
{
int i = 0;
int j = 0;
while (i < myobj.Count)
{
if(myobj[i].id == id)
{
j = myobj[i].val;
myobj[i].val = j + val;
}
}
}
【问题讨论】:
-
Foreach 将集合设为只读。所以你可以使用 foreach 循环更新集合
-
@Turbulence ,你的意思是说不能使用 foreach 循环更新集合。
-
@learningNew - 在这种情况下不是。我的意思是说 Foreach 循环使收集成为只读
-
我不明白你的实际问题是什么,你是在问如何用 switch 语句来做到这一点?
-
为什么 j = myobj[i].val; myobj[i].val = j + val;但不是 myobj[i].val = myobj[i].val + val ?
标签: c#