防止在Dictionary中对同一元素进行双重查找

时间:2015-01-02 20:54:39

标签: c# dictionary

我知道C#中没有reference to "struct" variable,但这种情况会很方便

    Dictionary<int, int> d = new Dictionary<int, int>();

    d.Add(1, 1);

    ++d[1];
    ++d[1];

如何在不使用operator[]两次的情况下对同一元素执行2次操作(在这种情况下为增量)(以防止双重查找)?

1 个答案:

答案 0 :(得分:3)

你可以创建一个包含另一个值的可变引用类型,在这种情况下是一个不可变的值类型,允许包装器的值被改变:

public class Wrapper<T>
{
    public T Value { get; set; }
}

这可以让你写:

Dictionary<int, Wrapper<int>> d = new Dictionary<int, Wrapper<int>>();

d.Add(1, new Wrapper<int>(){Value = 1});

var wrapper = d[1];
wrapper.Value++;
wrapper.Value++;