gpt4 book ai didi

c# - 在字典中添加复杂的键!对性能有影响吗

转载 作者:行者123 更新时间:2023-11-30 13:37:08 24 4
gpt4 key购买 nike

我只是在编写一个需要字典的程序(在 C#.net-4.5 中)

 Dictionary<List<Button>, String> Label_Group = new Dictionary<List<Button>, String>();

我的 friend 建议使用 key 作为字符串,这对搜索时的性能有什么影响吗?

我只是好奇它是如何工作的

最佳答案

事实上,查找基于List<Button>将比基于 string 更快,因为 List<T>不会覆盖 Equals .您的 key 将通过引用有效地进行比较 - 这非常便宜。

将其与使用字符串作为键进行比较:

  • 需要计算哈希码,这是非常重要的
  • 每个字符串比较都执行一个相等性检查,它有一个相等引用的捷径(可能还有不同的长度),但否则需要比较每个字符,直到发现差异或到达末尾

(采用不覆盖 GetHashCode 类型的对象的哈希码可能需要分配一个 SyncBlock - 我认为它曾经是。这可能比散列更昂贵短字符串...)

虽然将集合用作字典键很少是个好主意 - 如果您需要除了引用相等性之外的任何其他键比较,您需要编写自己的 IEqualityComparer<> .

关于c# - 在字典中添加复杂的键!对性能有影响吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25686168/

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