Вы можете использовать .NET отражатель , чтобы узнать.
System.Collections.Hashtable содержит некоторые жесткие ограничения:
double num = ((float) capacity) / this.loadFactor;
if (num > 2147483647.0)
{
throw new ArgumentException(Environment.GetResourceString("Arg_HTCapacityOverflow"));
}
Также имейте в виду значение int.MaxSize
для емкости (я думаю, что емкость может быть такой же, как и количество сегментов, в зависимости от коэффициента загрузки).
Однако, если вы достигаете этого предела размера, возможно, вы захотите изучить более эффективные методы хранения, чем объект CLR в хэш-таблице в памяти ...
Изменить:
Память для хеш-таблицы распределяется следующим образом:
int num2 = (num > 11.0) ? HashHelpers.GetPrime((int) num) : 11;
this.buckets = new bucket[num2];
[StructLayout(LayoutKind.Sequential)]
private struct bucket
{
public object key;
public object val;
public int hash_coll;
}
См. Ответ Уилла о том, что HashHelpers.GetPrime
делает.