public HashTable(int initialCapacity)
        {
            if (initialCapacity < 1)
            {
                throw new ArgumentOutOfRangeException("InitialCapacity");
            }

            _array = new HashTableArray <Tkey, Tvalue>(initialCapacity);

            _maxItemsAtCurrentSize = (int)(initialCapacity * _fillFactor) + 1;
        }
        public void Add(Tkey key, Tvalue value)
        {
            if (_count >= _maxItemsAtCurrentSize)
            {
                HashTableArray <Tkey, Tvalue> largerArray = new HashTableArray <Tkey, Tvalue>(_array.Capacity * 2);

                foreach (var node in _array.Items)
                {
                    largerArray.Add(node.Key, node.Value);
                }

                _array = largerArray;

                _maxItemsAtCurrentSize = (int)(_array.Capacity * _fillFactor) + 1;
            }

            _array.Add(key, value);
            _count++;
        }