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 }
        }

c#中字典不可变问题的替代方案

如果您试图增加给定键标识的值:

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;
}