【问题标题】:Under what circumstances _buckets[bucketNumber].key == _buckets && ((_buckets[bucketNumber].hash_coll & unchecked(0x80000000)) == 0)) in Hashtable什么情况下 _buckets[bucketNumber].key == _buckets && ((_buckets[bucketNumber].hash_coll & unchecked(0x80000000)) == 0)) 在Hashtable
【发布时间】:2021-06-10 11:01:59
【问题描述】:

https://source.dot.net/#System.Private.CoreLib/Hashtable.cs

_buckets[bucketNumber].key == _buckets && ((_buckets[bucketNumber].hash_coll & unchecked(0x80000000)) == 0))会在什么条件下执行这个逻辑

当该桶曾经包含一个条目并且它是Remove中的冲突时,该键设置为_buckets

【问题讨论】:

  • 如果不阅读我真的懒得做的完整代码,这很难说。这个类的源代码也在 GitHub 上,有unit tests。您可以尝试在那里设置断点并调试它们。你也可以问你的问题here

标签: c# .net asp.net-core .net-core base-class-library


【解决方案1】:

阅读评论很清楚:如果桶存在并且内部没有其他值(即,如果它从未使用过),或者如果只有一个值(没有冲突)并且后来被删除,因此桶是空的.

【讨论】:

  • 感谢您的回复。但是在 Remove _buckets[bn].key 中没有碰撞时将为空。我找不到任何情况下 _buckets[bucketNumber].key == _buckets 一次没有碰撞link
猜你喜欢
  • 2016-03-14
  • 1970-01-01
  • 2021-08-14
  • 2011-03-22
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多