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)); }
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); }