/// <summary> /// 将指定的节点添加到链表冷端的头部,链表操作本身是非线程安全的。 /// </summary> /// <param name="node">要添加的节点。</param> private void AddCodeFirst(LruNode <TKey, TValue> node) { Contract.Requires(node != null); Contract.Assume(codeHead != null); // 这里 codeHead != null,在调用的时候已经保证了这一点。 codeHead.AddBefore(node); codeHead = node; }
/// <summary> /// 将指定的节点添加到链表热端的头部,链表操作本身是非线程安全的。 /// </summary> /// <param name="node">要添加的节点。</param> private void AddHotFirst(LruNode <TKey, TValue> node) { Contract.Requires(node != null); if (head == null) { node.Next = node.Prev = node; } else { head.AddBefore(node); // 热端长度增加,将冷端头节点像前移动一个位置。 if (codeHead != null) { codeHead = codeHead.Prev; } } head = node; }