gpt4 book ai didi

C# Dictionary<> 和可变键

转载 作者:太空狗 更新时间:2023-10-29 17:30:17 27 4
gpt4 key购买 nike

有人告诉我,在 C# 规范中将字符串设置为不可变的众多原因之一是为了避免在对字符串键的引用更改其内容时哈希表更改键的问题。

Dictionary<> 类型允许将引用类型用作键。字典如何避免导致“错位”值的更改键问题?当用作键时,是否存在由对象组成的成员克隆?

最佳答案

Dictionary<TKey,TValue> type 不尝试防止用户修改所使用的 key 。完全由开发人员负责不改变 key 。

如果你稍微考虑一下,这确实是唯一合理的路线 Dictionary<TKey,TValue>可以采取。考虑在对象上执行类似成员克隆的操作的含义。为了彻底,您需要进行深度克隆,因为 key 中引用的对象也可能发生变异,从而影响哈希码。所以现在表中使用的每个键都有它的完整对象图克隆以防止突变。这既有问题,也可能是一项非常昂贵的操作。

关于C# Dictionary<> 和可变键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007296/

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