gpt4 book ai didi

c# - 检索字典值最佳实践

转载 作者:IT王子 更新时间:2023-10-29 03:39:14 25 4
gpt4 key购买 nike

我最近注意到 Dictionary.TryGetValue(TKey key, out TValue value) 并且很好奇从字典中检索值的更好方法是什么。

我传统上是这样做的:

if (myDict.Contains(someKey))
someVal = myDict[someKey];
...

除非我知道它必须在里面。

这样做更好吗:

if (myDict.TryGetValue(somekey, out someVal)
...

哪种做法更好?一个比另一个快吗?我认为 Try 版本会更慢,因为它“吞噬”了自身内部的 try/catch 并将其用作逻辑,不是吗?

最佳答案

TryGetValue 稍快一些,因为 FindEntry 只会被调用一次。

How much faster? It depends on the dataset at hand. When you call the Contains method, Dictionary does an internal search to find its index. If it returns true, you need another index search to get the actual value. When you use TryGetValue, it searches only once for the index and if found, it assigns the value to your variable.

仅供引用:它实际上并没有捕捉到错误。

它在呼唤:

public bool TryGetValue(TKey key, out TValue value)
{
int index = this.FindEntry(key);
if (index >= 0)
{
value = this.entries[index].value;
return true;
}
value = default(TValue);
return false;
}

ContainsKey是这样的:

public bool ContainsKey(TKey key)
{
return (this.FindEntry(key) >= 0);
}

关于c# - 检索字典值最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/378465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com