c#中字典不可变问题的替代方案
本文关键字:方案 问题 字典 不可变 | 更新日期: 2023-09-27 18:04:05
不确定在这种情况下字典的最佳替代方案是对象还是数组。我需要根据id/key是否存在来更改字典(或其他任何东西)的值,如果解析的id确实存在,则添加到现有值,而不是键/id -最好的替代方案是什么?
Dictionary<int, int> total = new Dictionary<int, int>();
// elsewhere in a function...
ArrayManager(total, id, value);
public void ArrayManager(Dictionary<int,int> items, int id, int val)
{
int i = 0;
bool found = false;
foreach(var item in items)
{
if(item.Key == id)
{
item.Value += val; // immutable issue stops this from working
found = true;
break;
}
}
if(found == false)
{ // do something }
}
如果您试图增加给定键标识的值:
public void ArrayManager(Dictionary<int,int> items, int id, int val)
{
int currentVal = 0;
if (items.TryGetValue(id, out currentVal))
{
int newVal = currentVal + val;
items[id] = newVal;
// Do something else
}
我相信你想做的是:
if(item.Key == id)
{
items[item.Key]+= val;
}