Exemplo n.º 1
0
        public void Add(K k, V v)
        {
            if (ContainsKey(k))
            {
                throw new ArgumentException();
            }

            if (Count >= MaxSize)
            {
                var last = m_list.Last;

                if (Ut.TraceLevel > 2)
                {
                    Debug.Print("RemovingFromLru: {0}", last.Value);
                }

                base.Remove(last.Value);
                m_list.Remove(last);
            }
            var item = new LruItem <K, V>()
            {
                m_node = m_list.AddFirst(k), m_value = v
            };

            base.Add(k, item);
        }
Exemplo n.º 2
0
 public new V this[K k] {
     get {
         var item = base[k];
         UpNode(item.m_node);
         return(item.m_value);
     }
     set {
         if (ContainsKey(k))
         {
             var node    = base[k].m_node;
             var newItem = new LruItem <K, V>()
             {
                 m_node = node, m_value = value
             };
             base[k] = newItem;
             UpNode(node);
         }
         else
         {
             Add(k, value);
         }
     }
 }