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

本文关键字:查找 元素 字典 | 更新日期: 2023-09-27 18:36:03

我知道 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++;