我有一个用于保存值的对象的全局列表,值和ID将被解析为ObjectManager
函数,Ids只能是列表中所述的内容。我希望函数更新与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;
}
}
}
答案 0 :(得分:3)
您可以使用FirstOrDefault()
var variable = myobj.FirstOrDefault(o=>o.id = "YOUR_ID"
FirstOrDefault()
将返回null,因此我们需要在更新项目之前检查null
if (variable != null) variable.val = YOUR_VALUE
答案 1 :(得分:3)
您应该使用Dictionary。