字典的工作方式与列表不同。如果您检查Microsoft提供的源代码。您可以找到多个私有字段,可能会有所帮助。
请注意,这是一个封装的实现细节,您不应在生产代码中依赖它,因为名称,私有成员和内部成员的行为可能会更改,恕不另行通知!
您有内部数组int[] buckets
和Entry[] entries
。您也有int freeList
和int freeCount
。您可以使用反射来解决这些问题。
要回答您的问题,是的,在每个插入上都会触发重新分配,这是实际的代码:
int index;
if (freeCount > 0)
{
index = freeList;
freeList = entries[index].next;
freeCount--;
}
else
{
if (count == entries.Length)
{
Resize();
targetBucket = hashCode % buckets.Length;
}
index = count;
count++;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句