/// <summary> /// Initializes a new instance of the <see cref="WeakKeyDictionary{TKey, TValue}"/> class. /// </summary> /// <param name="keyComparer">The key comparer to use. A <c>null</c> value indicates the default comparer will be used.</param> /// <param name="capacity">The initial capacity of the dictionary. Growth beyond this capacity will first induce a scavenge operation.</param> public WeakKeyDictionary(IEqualityComparer <TKey> keyComparer = null, int capacity = 10) { Requires.Range(capacity > 0, "capacity"); this.keyComparer = keyComparer ?? EqualityComparer <TKey> .Default; this.capacity = capacity; IEqualityComparer <WeakReference <TKey> > equalityComparer = new WeakReferenceEqualityComparer <TKey>(this.keyComparer); this.dictionary = new Dictionary <WeakReference <TKey>, TValue>(this.capacity, equalityComparer); }
/// <summary> /// Constructor taking a specified comparer for the keys /// </summary> internal WeakDictionary(IEqualityComparer <K> keyComparer) { IEqualityComparer <WeakReference <K> > equalityComparer = new WeakReferenceEqualityComparer <K>(keyComparer); _backingDictionary = new Dictionary <WeakReference <K>, WeakReference <V> >(equalityComparer); }