防止在字典中重复查找同一元素

Prevent double lookup of the same element in Dictionary

我知道在C#中没有reference to "struct" variable,但在这种情况下它会派上用场

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

    d.Add(1, 1);

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

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

您可以创建一个可变引用类型来包装另一个值,在本例中是一个不可变值类型,允许更改包装器的值:

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