当做类似的事情时:

int value;
if (dict.TryGetValue(key, out value))
{
    if (condition)
    {
        //value = 0;  this copies by value so it doesn't change the existing value
        dict[key] = 0;
    }
}
else
{
    dict[key] = 0;
}

有什么方法可以避免索引查找来替换现有值?我已经使用TryGetValue验证了键是否存在,因此不得不再次通过索引检索值似乎是一种浪费。

另外,与我的代码的else {}部分一样,在添加新值或替换旧值时使用索引器,并明确添加您要添加​​而不替换的内容,通常是否被认为是一种好习惯?还是应该每次都使用索引器?我学会使用字典的方式是,我总是进行TryGetValue查找,而在else部分中,我处理不存在键的情况。

最佳答案



并不是我所知道的-但是字典访问应该非常快,除非您有一个自定义类,该类被GetHashCode覆盖得很差。

如果您由于双重查询而没有看到性能问题,我将不理会它。

09-25 19:32