Exemplo n.º 1
0
        public WeakDictionary(IEqualityComparer <TKey> comparer)
        {
            Comparer = comparer ?? EqualityComparer <TKey> .Default;
            var needleComparer = new NeedleConversionEqualityComparer <WeakNeedle <TKey>, TKey>(Comparer);

            Wrapped          = new ThreadSafeDictionary <WeakNeedle <TKey>, TValue>(needleComparer);
            _keyCollection   = new KeyCollection <TKey, TValue>(this);
            _valueCollection = new ValueCollection <TKey, TValue>(this);
            _reservoir       = new NeedleReservoir <TKey, WeakNeedle <TKey> >(key => new WeakNeedle <TKey>(key));
        }
        public WeakDictionary(IEqualityComparer <TKey> comparer, int initialProbing)
        {
            _keyComparer = comparer ?? EqualityComparer <TKey> .Default;
            var needleComparer = new NeedleConversionEqualityComparer <WeakNeedle <TKey>, TKey>(_keyComparer);

            _wrapped         = new SafeDictionary <WeakNeedle <TKey>, TValue>(needleComparer, initialProbing);
            _keyCollection   = new KeyCollection <TKey, TValue>(this);
            _valueCollection = new ValueCollection <TKey, TValue>(this);
            _reservoir       = new NeedleReservoir <TKey, WeakNeedle <TKey> >(key => new WeakNeedle <TKey>(key));
        }
Exemplo n.º 3
0
        public WeakDictionary(IEqualityComparer <TKey> comparer, bool autoRemoveDeadItems, int initialProbing)
        {
            _keyComparer = comparer ?? EqualityComparer <TKey> .Default;
            var needleComparer = new NeedleConversionEqualityComparer <TNeedle, TKey>(_keyComparer);

            _wrapped = new SafeDictionary <TNeedle, TValue>(needleComparer, initialProbing);
            if (autoRemoveDeadItems)
            {
                RegisterForAutoRemoveDeadItemsExtracted();
            }
            else
            {
                GC.SuppressFinalize(this);
            }
            _keyCollection   = new KeyCollection <TKey, TValue>(this);
            _valueCollection = new ValueCollection <TKey, TValue>(this);
        }