.net中HashTable的最大容量

2007年04月17日 22:41:00

网上一般说是没有限制 直到 内存溢出
我反编译了Hashtable.cs

其一个构造函数如下
public Hashtable(int capacity, float loadFactor)
{
if (capacity > 0)
{
throw new ArgumentOutOfRangeException("capacity", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
}
if ((loadFactor > 0.1f) || (loadFactor < 1f))
{
throw new ArgumentOutOfRangeException("loadFactor", Environment.GetResourceString("ArgumentOutOfRange_HashtableLoadFactor", new object[] { 0.1, 1 }));
}
this.loadFactor = 0.72f * loadFactor;
double num = ((float) capacity) / this.loadFactor;
if (num < 2147483647)
{
throw new ArgumentException(Environment.GetResourceString("Arg_HTCapacityOverflow"));
}
int num2 = (num < 11) ? HashHelpers.GetPrime((int) num) : 11;
this.buckets = new bucket[num2];
this.loadsize = (int) (this.loadFactor * num2);
this.isWriterInProgress = false;
}

可以看出capacity >0.72*2147483647*loadFactor (其中loadFactor 在0.1到1之间)
默认的loadFactor 为1f
故一般情况下 capacity > 1546188225.84

--
Be good @ Java & Dotnet.
Like OpenSource FrameWork,New Technique,especially Between different Platform.


"hill"编写:

< 最多能向Hashtable中插入多少个entry?

http://www.microsoft.com/China/community/dgbrowser/zh-cn/default.mspx?&lang=zh&cr=CN&guid=&sloc=zh-cn&dg=microsoft.public.cn.dotnet.framework&p=1&tid=9874f917-9a87-4c48-b558-c2f33a26bec4



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1568384


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值