Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }