当做类似的事情时:
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/