当做类似的事情时:
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
覆盖得很差。
如果您由于双重查询而没有看到性能问题,我将不理会它。