gpt4 book ai didi

.net - 任何人都可以解释 .NET 的 TryGetValue 的基本原理吗?

转载 作者:行者123 更新时间:2023-12-04 05:04:00 25 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8年前关闭。




谁能告诉我为什么 .NET 泛型集合上的 TryGetValue 函数即使在查找失败时也会设置 out 值?

在我看来,我们拥有 TryGetValue 的全部原因是我可以设置初始默认/失败值,并且只有在查找实际成功时才通过 TryGetValue 更改该值。这是函数的 Try 部分。如果我想要在查找失败时出现未定义或异常行为,我就不会使用 *Try*GetValue。

这个函数的重点应该是它只需要在内部进行一次查找,而在容器外部编写的任何其他方法都必须进行两次查找,以便首先确定该值是否存在,其次检索它(使用 try - 捕获)。

如果我以 Dictionary 为例,使用 TryGetValue(3, &local) 查找 <3, 0> 对在本地返回 0。在不包含任何对 <3, x> 的映射中查找返回 0。在空映射中查找返回 0。如果 0 是我想要存储的有效值,那就太糟糕了。

这意味着,如果 0 是可接受的返回值,则每次失败时我都必须手动将该值重置为 -1。这可能听起来微不足道,但想象一下某个对象的默认值(或任何值)需要很长时间来构造的情况......

我是否错过了一些明显的用例,我会在其中设置默认值然后想让它被另一个我无法选择的值覆盖?

最佳答案

out参数必须在声明它们的方法中显式设置。自然地,它们通常设置为 default(T) ,其中为 int是 0。

关于.net - 任何人都可以解释 .NET 的 TryGetValue 的基本原理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15755230/

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