C#中的字典不可变问题替代

时间:2015-07-22 11:58:58

标签: c# dictionary

在这种情况下,不确定字典的最佳替代方法 - 对象或数组。 我需要更改字典(或其他任何内容)的值,具体取决于id / key是否存在,如果解析的id确实存在,则添加到现有值,而不是key / id - 什么是最佳替代?< / p>

代码

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

2 个答案:

答案 0 :(得分:4)

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

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
    }

答案 1 :(得分:2)

我相信你要做的是:

if(item.Key == id)
{
    items[item.Key]+= val;
}