首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定C#字典的当前容量?

如何确定C#字典的当前容量?
EN

Stack Overflow用户
提问于 2016-10-06 07:04:00
回答 1查看 1.3K关注 0票数 5

列表具有获取计数及其容量的单独属性。与所有集合一样,字典也具有计数属性,并且它具有一个容量,因为它有几个允许您指定它的建设者,而添加方法的文档提到了它。然而,我看不出有什么方法可以查询字典的当前容量。

即使无法获得字典当前的容量,是否有任何方法可以预测何时可能发生重新分配?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-06 07:26:27

字典的工作方式与列表不完全一样。如果您检查微软提供的源代码。您可以找到多个可能有用的私有字段。

请注意,这是一个封装的实现细节,您不应该在您的生产代码中依赖它,因为名称、私有成员和内部成员的行为可能会在没有事先通知的情况下更改!

您有内部数组int[] bucketsEntry[] entries。您还拥有int freeListint freeCount。你可以利用反射来玩这些游戏。

为了回答您的问题,是在每个插入上触发一个重新分配,下面是实际代码:

代码语言:javascript
复制
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++;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39889575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档