C# 字典 TryGetValue 与 int 值,如何避免双重查找

标签 c# dictionary out trygetvalue

当做类似的事情时:

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 验证 key 是否存在,因此必须再次通过索引检索值似乎是一种浪费。

在一个单独的注释中,如在我的代码的 else{} 部分,在添加新值或替换旧值时使用索引器通常被认为是好的做法,并添加以明确您正在添加而不是替换?或者我应该每次都使用索引器吗?我学习使用字典的方式是,我总是进行 TryGetValue 查找,在其他部分我处理不存在键的情况。

最佳答案

Is there any way I can avoid index lookup to replace the existing value?

据我所知 - 但字典访问应该非常很快,除非您有一个自定义类被 GetHashCode 糟糕地覆盖。

如果您因为双重查找而没有发现性能问题,我会放过它。

关于C# 字典 TryGetValue 与 int 值,如何避免双重查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15903744/

相关文章:

python - 如何以特定方式迭代字典?

java - System.out的实现中不需要捕获异常吗?

c# - 识别 Action<T> 类中的 "actions"列表(将分配哪些属性)

Python - 将不同类的对象传递给函数

c# - 如何从父级访问嵌套的用户控件 View 模型

python - 使用 Python 统计文本文件中所有单词的实例

Mysql - 存储过程OUT变量返回null

c# - 使用 "ref"和/或 "out"作为对象类型

c# - 对 SharePoint 列表的 CAML 查询,按查找字段排序

c# - Selenium : xpath following-sibling where siblings have more children