我知道C#中没有reference to "struct" variable
,但这种情况会很方便
Dictionary<int, int> d = new Dictionary<int, int>();
d.Add(1, 1);
++d[1];
++d[1];
如何在不使用operator[]
两次的情况下对同一元素执行2次操作(在这种情况下为增量)(以防止双重查找)?
答案 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++;